distinct只能返回它的目标字段,而无法返回其它字段,
有如下记录表:
select * from user2;

当只对username去重时,可以过滤掉相同的username记录。
select distinct username from user2;

但是,当使用如下sql语句是,distinct貌似失效了。
select distinct username,userid from user2;

原因是,它同时作用了两个字段,只有username和userid都相同时才会被排除。而且distinct关键字必须使用在sql语句的最开始位置。
级联查询也会有同样的问题出现:
select distinct u1.username,u2.* from user2 u1 ,user2 u2 where u1.userid = u2.userid;

解决方法如下:
select username,`userid` from user2 group by `username`;

在这里使用group by 函数进行了去重操作。
网友评论