SELECT id, COUNT(id) AS n
FROM yww_test
GROUP BY id;
輸出每個 id 出現次數。
SELECT id, COUNT(*) AS n
FROM yww_test
GROUP BY id
HAVING COUNT(*) > 1;
HAVING 過濾分組後結果,COUNT(*) 統計每組行數(含 NULL)。
| 函數 | 統計對象 | NULL 處理 |
|---|---|---|
COUNT(*) | 所有行 | 包含 NULL 行 |
COUNT(col) | 指定欄位非 NULL 值 | 忽略 NULL |
COUNT(DISTINCT col) | 指定欄位唯一非 NULL 值 | 忽略 NULL 並去重 |
COUNT(*),MySQL 優化器會直接讀取表元資料(MyISAM)或掃描最小索引(InnoDB)COUNT(DISTINCT col)GROUP BY 後的 SELECT 列表僅能包含分組欄位或聚合函數,否則結果不確定(ONLY_FULL_GROUP_BY 模式會報錯)