對於mysql數據庫,查詢結果會有很多重復數據,如何去重?相信很多人第一反應就是使用distinct關鍵字。但是對於distinct的細節,卻不是很了解。比如,對於下面的user表,去重后后的結果是什么呢?
user_name | user_password |
笑傲獨行俠 | 123 |
笑傲獨行俠 | 123 |
笑傲獨行的俠客 | 123 |
笑傲獨行的俠客 | 456 |
1.select distinct user_name from user 查詢結果是什么?
這個最簡單,相信大家都知道。把重復列去掉,每一組相同的值都只保留一個結果(兩個笑傲獨行俠只保留一條,兩條笑傲獨行的俠客只保留一條,四條數據剩下兩條)。
笑傲獨行俠 |
笑傲獨行的俠客 |
2.select distinct user_name,user_password from user 查詢結果是什么呢?
有人可能是覺得,distinct放在user_name列前面,就是對該列的結果進行去重,其實不然。distinct是不能針對某一列進行去重的。它只能針對跟在他后面的所有列進行去重。所以查詢結果應該是
笑傲獨行俠 | 123
|
笑傲獨行的俠客 | 123 |
笑傲獨行的俠客 | 456 |
即,對於整個查詢結果的所有列去重。