表中單列 A 存儲如「電腦A」「電腦A」「光盤B」等數據,需查詢前 2 個字符相同的記錄數,期望輸出:
A count
電腦 2
光盤 2
手機 2
嘗試使用 WHERE COUNT(LEFT(A,2))=2 報錯:聚合函數不能用於 WHERE 子句。
SELECT LEFT(A, 2) AS 前綴, COUNT(*) AS 數量
FROM 表名
GROUP BY LEFT(A, 2)
HAVING COUNT(*) = 2;
LEFT(A, 2) 截取前 2 個字符作為分組依據。GROUP BY 按截取值分組。HAVING 過濾分組後的聚合結果(這裡保留計數等於 2 的組)。WHERE 用於分組前過濾行,HAVING 用於分組後過濾組。若需統計所有前綴及其計數,只需移除 HAVING 子句。