mysql去重復關鍵字distinct的用法


distinct的去重復的提前是表中所有列的數據完成相同時,才能把相同的數據只保留一條,並不是 distinct 列名,除去某一列相同的數據,並且 distinct要放在第一個列前面。案例如下:一個學生表如下:第一條記錄跟第四條記錄完成相同 第一條的性名列跟第二條相同。

 

 

 現在除掉相同的姓名的數據,只保留一條。代碼如下:

SELECT id AS "學號", IFNULL (age,0) AS "年齡", DISTINCT s.`name` AS "姓名", brithday AS "生日", s.`intsert_time` AS "插入時間"   FROM stu1 s ;結果報如下錯:

 

 既然distinct 只能放在第一列前,哪我把姓名列移動第一列看看代碼如下:

SELECT DISTINCT s.`name` AS "姓名", id AS "學號", IFNULL (age,0) AS "年齡", brithday AS "生日", s.`intsert_time` AS "插入時間" FROM stu1 s ;
運行結果卻是去掉第四條數據,但是沒有去掉第二條數據。說明distinct去重復要求某幾條數據完成一樣才會去重復。運行結果如下圖:

 

 如果想姓名列相同,只保留一條記錄,那么可以考慮group by 分組,現在用group by 看看效果,代碼如下:

SELECT DISTINCT s.`name` AS "姓名", id AS "學號", IFNULL (age,0) AS "年齡", brithday AS "生日", s.`intsert_time` AS "插入時間" FROM stu1 s GROUP BY s.`name`; 
運行結果只保留第一條記錄,第2,4條數據都去掉了。

 

 如果我們只需要計算某個字段去重復后的總記錄數的話可以用以下代碼:

SELECT   COUNT(DISTINCT s.name) AS "唯一姓名總數"  FROM stu1 s;  結果如下:

 

 總結一下:如果我們需要去掉完全重復的數據可以用distinct放在第一列數據前面,如果我們只需要按照某列相同去掉重復的數據,可以用group by 進行分組。如果我們只需要計算某一個字段去重復后的總記錄數可以 用 count(distinct 列名)聚合函數的方式獲取。

 

 

 



 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM