去重复查询 可以使用 distinct 用法和group by (本文部分内容参考网上资料)

  在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段。

     group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。

例如有如下表user:

mysql中分组删除重复数据 mysql 分组去重_mysql中分组删除重复数据

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

mysql中分组删除重复数据 mysql 分组去重_用户名_02

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

mysql中分组删除重复数据 mysql 分组去重_字段_03

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

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

关于 group by的用法参考