零基础学SQL
上QQ阅读APP看书,第一时间看更新

5.3 查询表中不重复的记录

在使用SELECT语句执行查询操作时,检索的是数据表中所有满足条件的行,如果数据表中有重复行也会被查询出来,例如下面这个例子。

例5.3 查询成绩信息表(T_result)中选修课程的学生。

        SELECT stuID
        FROM T_result

这里要查询的是成绩信息表(T_result)中选修课程的学生。在SELECT语句中通过成绩信息表(T_result)中学生编号stuID字段查询选修课程的学生信息。其查询结果如图5.3所示。

图5.3 查询成绩信息表中(T_result)选修课程的学生

图5.3中一共查询出了13条记录。而在这13条记录中很多学生编号的记录都是重复的。可以看到,这些重复的记录并不是用户所需要的,也没有什么实际的意义。

在实际应用中,往往不希望看到查询结果中有重复的记录行存在。为了在查询的结果中不显示重复的记录行,在SELECT语句中就需要加上一个DISTINCT关键字排除查询结果中重复行的记录。其语法格式如下:

        SELECT DISTINCT目标列[,目标列,...]
        FROM 表名或者视图名[,表名或者视图]

其中,SELECT语句后面的目标列表示要查询的指定列的名字。在目标列的前面加上一个DISTINCT关键字,表示指定目标列的查询结果中去掉重复的行。在SELECT语句中指定的目标列可以是一列也可以是多个列,指定多个列时,多个列名之间需要用逗号分开。FROM子句后面的表名或者视图名用来表示指定要查询数据表或者视图的名字。[]里面指定的表名或者视图是可选的,也就是说, FROM语句后面可以跟多个表或者视图的名字,多个表或者视图之间用逗号分开。

例5.4 查询成绩信息表(T_result)中选修课程的学生(去掉重复行)。

        SELECT DISTINCT stuID
        FROM T_result

这里要查询的是成绩信息表(T_result)中选修课程的学生,SELECT语句中在表示学生编号stuID字段的前面加了一个DISTINCT关键字,表示查询的结果中不包括重复的学生记录。其查询结果如图5.4所示。

图5.4 查询成绩信息表(T_result)中选修课程的学生(去掉重复行)

图5.4中一共查询出了5条记录。而在这5条记录中重复的学生编号的记录已经不存在了。可以看到,在显示的查询结果中已经不包括重复的学生编号的记录了。