MYSQL->DISTINCT关键字
DistinctDistinct支持单列、多列的去重方式。单列去重的方式简明易懂,即相同值只保留1个。 多列的去重则是根据指定的去重的列信息来进行,即只有所有指定的列信息都相同,才会被认为是重复的信息。Distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。基本使用Distinct一般是用来去除查询结果中的重...
Distinct
Distinct支持单列、多列的去重方式。单列去重的方式简明易懂,即相同值只保留1个。 多列的去重则是根据指定的去重的列信息来进行,即只有所有指定的列信息都相同,才会被认为是重复的信息。
Distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。
基本使用
Distinct
一般是用来去除查询结果中的重复记录的,而且这个语句在select
、insert
、delete
和update
中只可以在select
中使用,具体的语法如下:
select distinct expression[,expression...] from tables [ where conditions];
这里的expressions可以是多个字段。本文的所有操作都是针对如下示例表的:
1.1 只对一列操作
这种操作是最常见和简单的,如下:
select distinct country from person
1.2 对多列进行操作
比如SELECT DISTINCT country, province FROM PERSON; 实际上返回的是country,与province同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得country,与province都相同的才被排除了,与我们期望的结果不一样,我们期望的是province不同被过滤
在这种情况下,distinct同时作用了两个字段,country,province
select distinct country, province from person
从上例中可以发现,当distinct
应用到多个字段的时候,其应用的范围是其后面的所有字段,而不只是紧挨着它的一个字段,而且distinct
只能放到所有字段的前面,如下语句是错误的:
SELECT country, distinct province from person;
// 该语句是错误的
抛出错误如下:
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘DISTINCT province from person’ at line 1
1.3 针对NULL
的处理
从1.1和1.2中都可以看出,Distinct
对NULL
是不进行过滤的,即返回的结果中是包含NULL
值的。
更多推荐
所有评论(0)