1. 程式人生 > >mysql distinct 去除重復記錄

mysql distinct 去除重復記錄

mysql distinct

雖然distinct是sql的一個語法,並不屬於mysql,但此處以mysql舉例。
用了那麽多年的distinct,居然一直都是錯的。一直以為distinct是去除重復的字段,原來它是去除重復的記錄。

重復的記錄是指distinct後所有的字段都相同的記錄。

舉例:假設在一個多店版的商城系統裏,有一個記錄銷售記錄的表,記錄著每個店鋪的每一筆銷售額。如下:
技術分享圖片
運行下面的查詢,然後分別對比結果,我們就不難發現,distinct是去除重復的記錄。
技術分享圖片

第一條查詢 select distinct uid from sale_log; 篩選出了有銷售額的店主。
第二條查詢 select distinct uid,store_id from sale_log; 篩選出了有銷售額的店主的不同店鋪。可以很明顯的看出,此條查詢返回的結果是過濾掉了 uid 和 store_id 都一樣的記錄,而不是我以前想當然的認為,只要有 distinct 關鍵字修飾的字段,都不會出現重復值。

最後,再次強調,distinct 是作用於整條查詢,而不是作用於緊跟其後的字段。

mysql distinct 去除重復記錄