Distinct,经百度可知词义是:有区别的。所以我们再次引申为“不许重复”的。也就是通过这个关键字我们可以在数据库中查找不重复的记录。下面说一说distinct的用法。

一、查询所有信息

select S_number , S_name, Nation , Address  from t_student
--将所有学生信息中的编号,姓名,民族,地址都列出来。

代码效果如下:(将表中11条记录全部列出)

restfull去掉null属性_restfull去掉null属性

二、删除重复项:

为了方便看出在学生心中查看共有几个专业,我们就可以使用distinct。

select distinct Department   from t_student
--distinct Department 会过滤掉重复的department

代码效果如下:(只有三项)

restfull去掉null属性_百度_02

三、distinct也可以过滤掉重复的null,  或者说如果有多个null时,只输出一个

 

restfull去掉null属性_数据库_03

在上图中我们可以看出,address中有两个null,表示这两个人的具体地址不详,那么我们的distinct遇到null会出现什么情况,会报错吗。让我们来试一试。

代码:

select distinct Address  from t_student

代码效果:可以将null过滤出来,并且只出现一个null。(只显示了10条记录,表示将重复的null记录筛选掉了)

restfull去掉null属性_百度_04

四、distinct的组合字段使用




restfull去掉null属性_restfull去掉null属性_05



当我们想过滤信息中各民族中的人群有哪些政治地位的。我们就要使用distinct的组合了。

代码:

select distinct Nation ,Politics   from t_student

代码效果:(只产生了8条记录,将相同的记录筛选掉了)

restfull去掉null属性_restfull去掉null属性_06

我们可以与上一张图比较,可以看出,信息表中汉族有三种政治身份。回族中只有一种身份,等等。

五、distinct的错误用法。

在第四条用法中,我们可以看出,在distinct总是在字段名的前面,那我们能不能这样使用呢

代码:

select  Nation ,distinct Politics   from t_student

代码效果如下:

restfull去掉null属性_字段_07

我想出现这样的错误,经过查询我们得知。这是一个逻辑错误,我们可以知道在上述语句中select Nation 是将信息表中的11条记录全部调出,而distinctPolitics的作用是将表中的Politics字段进行筛选从而只会产生3条记录,因此没法和前面11条记录进行匹配显示。

 

本文章使用的数据库素材:http://pan.baidu.com/share/link?shareid=3097790227&uk=3710187141