Distinct,经百度可知词义是:有区别的。所以我们再次引申为“不许重复”的。也就是通过这个关键字我们可以在数据库中查找不重复的记录。下面说一说distinct的用法。
一、查询所有信息
select S_number , S_name, Nation , Address from t_student
--将所有学生信息中的编号,姓名,民族,地址都列出来。
代码效果如下:(将表中11条记录全部列出)
二、删除重复项:
为了方便看出在学生心中查看共有几个专业,我们就可以使用distinct。
select distinct Department from t_student
--distinct Department 会过滤掉重复的department
代码效果如下:(只有三项)
三、distinct也可以过滤掉重复的null, 或者说如果有多个null时,只输出一个
在上图中我们可以看出,address中有两个null,表示这两个人的具体地址不详,那么我们的distinct遇到null会出现什么情况,会报错吗。让我们来试一试。
代码:
select distinct Address from t_student
代码效果:可以将null过滤出来,并且只出现一个null。(只显示了10条记录,表示将重复的null记录筛选掉了)
四、distinct的组合字段使用
当我们想过滤信息中各民族中的人群有哪些政治地位的。我们就要使用distinct的组合了。
代码:
select distinct Nation ,Politics from t_student
代码效果:(只产生了8条记录,将相同的记录筛选掉了)
我们可以与上一张图比较,可以看出,信息表中汉族有三种政治身份。回族中只有一种身份,等等。
五、distinct的错误用法。
在第四条用法中,我们可以看出,在distinct总是在字段名的前面,那我们能不能这样使用呢
代码:
select Nation ,distinct Politics from t_student
代码效果如下:
我想出现这样的错误,经过查询我们得知。这是一个逻辑错误,我们可以知道在上述语句中select Nation 是将信息表中的11条记录全部调出,而distinctPolitics的作用是将表中的Politics字段进行筛选从而只会产生3条记录,因此没法和前面11条记录进行匹配显示。
本文章使用的数据库素材:http://pan.baidu.com/share/link?shareid=3097790227&uk=3710187141