簡體   English   中英

MySQL查詢相反的GROUP BY或DISTINCT?

[英]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

關於SQLFiddle的演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM