簡體   English   中英

MySQL:如果僅將1行分組,則從GROUP BY結果中刪除行

[英]MySQL: Remove rows from a GROUP BY result if it only grouped 1 row

選擇數據時,我可以通過運行以下命令顯示使用GROUP BY分組的行數:

SELECT id, created, COUNT(id) `count` FROM table
    GROUP BY id
    LIMIT 0,30

count字段可以輕松輸出GROUP BY影響了多少行。 在MySQL中,是否可以自動包括僅count值為1任何行?

您應該考慮使用HAVING子句,該子句允許您在完成分組后添加條件。

SELECT id, created, COUNT(id) cnt FROM table
GROUP BY id
HAVING cnt > 1
LIMIT 0,30

要提到的另一件事是分組可能不正確。 如果按id和你選擇id, created那么對於價值created是不確定的。 如果它們不同,MySQL將為給定的id選擇它們中的任何一個。 您可能也有興趣按該字段分組或應用聚合函數(例如: max(created) )。

要提及的第二件事是COUNT(id)不會計算行數,而是會計算id不為null的行數。 如果id永不為null,則它將得到與count(*)相同的值。

是。 您可以使用HAVING來限制諸如COUNT(MAX,MIN,SUM等)之類的聚合函數的結果。

SELECT id, created, COUNT(id) `count` 
FROM table
GROUP BY id
HAVING COUNT(id) > 1
LIMIT 0,30

顯示手冊並找到HAVING

... HAVING COUNT(id) > 1

http://dev.mysql.com/doc/refman/5.1/de/select.htmlhavinh

暫無
暫無

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

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