mysql中去重,distinct和group by的区别

Posted 失落的黎明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中去重,distinct和group by的区别相关的知识,希望对你有一定的参考价值。

在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段,例如有如下表user:

用distinct来返回不重复的用户名:select distinct name from user;,结果为:

这样只把不重复的用户名查询出来了,但是用户的id,并没有被查询出来:select distinct name,id from user;,这样的结果为:

distinct name,id 这样的mysql 会认为要过滤掉name和id两个字段都重复的记录,如果sql这样写:select id,distinct name from user,这样mysql会报错,因为distinct必须放在要查询字段的开头。

所以一般distinct用来查询不重复记录的条数。

如果要查询不重复的记录,有时候可以用group by :

select id,name from user group by name;

以上是关于mysql中去重,distinct和group by的区别的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中的 distinct 和 group by 去重效率区别

mysql中去重 distinct 用法

mysql中去重 distinct 用法

MySQL - DISTINCT & GROUP BY 去重

当进行数据的去重查询时,使用group by效率更高。

去重是distinct还是group by