去重復查詢 可以使用 distinct 用法和group by (本文部分內容參考網上資料)
在使用mysql時,有時需要查詢出某個字段不重復的記錄,雖然mysql提供有distinct這個關鍵字來過濾掉多余的重復記錄只保留一條,但往往只用它來返回不重復記錄的條數,而不是用它來返回不重記錄的所有值。其原因是distinct只能返回它的目標字段,而無法返回其它字段。
group by語法可以根據給定數據列的每個成員對查詢結果進行分組統計,最終得到一個分組匯總表。 SELECT子句中的列名必須為分組列或列函數。列函數對於GROUP BY子句定義的每個組各返回一個結果。
例如有如下表user:
用distinct來返回不重復的用戶名:select distinct name from user;,結果為:
這樣只把不重復的用戶名查詢出來了,但是用戶的id,並沒有被查詢出來:select distinct name,id from user;,這樣的結果為:
distinct name,id 這樣的mysql 會認為要過濾掉name和id兩個字段都重復的記錄,如果sql這樣寫:select id,distinct name from user,這樣mysql會報錯,因為distinct必須放在要查詢字段的開頭。
所以一般distinct用來查詢不重復記錄的條數。
關於 group by的用法參考