SQL 6 抑制数据重复

来源:互联网 发布:英国与欧盟贸易数据 编辑:程序博客网 时间:2024/05/22 06:26

如果要检索公司有哪些垂直部门,那么可以执行下面的SQL语句:

SELECT FDepartment FROM T_Employee

 

执行完毕我们就能看到下面的执行结果:

+---------------+
| FDepartment   |
+---------------+
| Development   |
| Development   |
| Development   |
| HumanResource |
| HumanResource |
| InfoTech      |
| InfoTech      |
| Sales         |
| Sales         |
+---------------+

 

这里列出了公司所有的垂直部门,不过很多部门名称是重复的,我们必须去掉这些重复的部门名称,每个重复部门只保留一个名称。

DISTINCT关键字是用来进行重复数据抑制的最简单的功能,而且所有的数据库系统都支持DISTINCT,DISTINCT的使用也非常简单,只要在SELECT之后增加DISTINCT即可。比如下面的SQL语句用于检索公司里有哪些垂直部门,并且一直重复数据的产生:

SELECT DISTINCT FDepartment FROM T_Employee

 

执行完毕我们就能看到下面的执行结果:

+---------------+
| fdepartment   |
+---------------+
| Development   |
| HumanResource |
| InfoTech      |
| Sales         |
+---------------+

 

DISTINCT  是对整个结果集进行数据重复抑制的,而不是针对每一个列的,执行下面的SQL:

SELECT DISTINCT FDepartment, FSubCompany FROM T_Employee

+---------------+-------------+
| fdepartment   | fsubcompany |
+---------------+-------------+
| Development   | Beijing     |
| Development   | ShenZhen    |
| Development   | Guangzhou   |
| HumanResource | Beijing     |
| InfoTech      | Beijing     |
| InfoTech      | ShenZhen    |
| Sales         | Beijing     |
+---------------+-------------+

 

检索结果中不存在FDepartment和FSubCompany列都重复的数据行,但是却存在FDepartment列重复的数据行,这就验证了“DISTINCT是对整个结果集进行数据重复抑制”这句话。