对于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 |
即,对于整个查询结果的所有列去重。