首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL COUNT 與 GROUP BY 進階:分組統計、找重複、NULL 處理差異

     編輯:MySQL 綜合教學

MySQL COUNT 與 GROUP BY 進階:分組統計、找重複、NULL 處理差異

基本分組統計

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)。

COUNT(*) vs COUNT(col) vs COUNT(DISTINCT col) 差異

函數統計對象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 模式會報錯)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved