MySQL 查询 GROUP BY 或 DISTINCT 的对立面?

MySQL query for opposite of GROUP BY or DISTINCT?

下面的答案很适合我:

现在我不想 selecting distinct 或 group by ,我想 select 所有记录 ext_no 具有 value zero 仅。

如何修改这个答案?我尝试使用 order by 但它显示错误。任何帮助将不胜感激。提前致谢。

SELECT   ext_no, MAX(value)
FROM     test
GROUP BY ext_no
HAVING   COUNT(*) > 2 AND 
         COUNT(*) = COUNT(CASE value WHEN 0 THEN 1 END)

您可以通过多种方式实现这一目标。在 WHERE 子句中使用几个相关的子查询或通过连接到 table 包含 ext_no 的每个值的 MAX(value)COUNT(*) 值:

查询 1

SELECT ext_no
FROM test t1
WHERE NOT EXISTS (SELECT * 
                  FROM test t2
                  WHERE t2.ext_no = t1.ext_no AND value != 0)
  AND (SELECT COUNT(*)
       FROM test t3
       WHERE t3.ext_no = t1.ext_no) > 2

第一个子查询检查此 ext_no 除 0 外没有 value。第二个子查询检查此 ext_no.

有超过 2 个副本

查询 2

在此查询中,我们在JOIN条件中应用所有条件(value的非零值和ext_no的2个以上副本)。

SELECT t1.ext_no
FROM test t1
JOIN (SELECT ext_no, MAX(value) AS max_value, COUNT(*) AS count
      FROM test 
      GROUP BY ext_no) t2
  ON t2.ext_no = t1.ext_no AND t2.max_value = 0 AND t2.count > 2

输出(对于两个查询)

ext_no
12133
12133
12133
11505
11505
11505
11505

Demo on SQLFiddle