[英]MySQL Group By and return distinct rows from grouped result based on conditions
[英]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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.