mysql关键字 distinct去重

Distinct一般是用来去除查询结果中的重复记录的,而且这个语句在只可以在select中使用

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

1.单列

相同值只保留1个

select distinct country from person;

2.多列

所有指定的列信息都相同,才会被认为是重复的信息

select distinct country, province from person;

从上例中可以发现,当distinct应用到多个字段的时候,其应用的范围是其后面的所有字段,而不只是紧挨着它的一个字段,而且distinct只能放到所有字段的前面,如下语句是错误的:

3.NULL处理

Distinct对NULL是不进行过滤的,即返回的结果中是包含NULL值的。

4.COUNT统计

select count(distinct name) from A;

表中name去重后的数目, SQL Server支持,而Access不支持
count是不能统计多个字段的,下面的SQL在SQL Server和Access中都无法运行。

select count(distinct name, id) from A;

若想使用,请使用嵌套查询,如下:

select count(*) from (select distinct xing, name from B) AS M;

5.distinct必须放在开头

错误示例:

select id, distinct name from A; 

你可能感兴趣的:(日常总结,mysql,sql)