[英]MySQL query for opposite of GROUP BY or DISTINCT?
我有下面的答案對我來說很好:
現在,而不是選擇“ distinct”或“ group by”,我想選擇所有僅具有零 value
ext_no
記錄。
如何修改這個答案? 我嘗試使用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
子句中使用幾個相關的子查詢,或者通過將EXT_no的每個值聯接到包含MAX(value)
和COUNT(*)
值的ext_no
:
查詢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
沒有value
大於0的第二檢查有此超過2份其他ext_no
。
查詢2
在這個查詢中,我們應用所有的條件(沒有非零值value
和超過2份ext_no
)在JOIN
條件。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.