处理重复行
当 SQL 对 SELECT 语句进行求值时,根据满足 SELECT 语句的搜索条件的行数,可能有几行符合结果表中的条件。 结果表中的某些行可能重复。
您可以使用 DISTINCT 关键字指定不需要任何重复项,后跟表达式列表:
SELECT DISTINCT JOB, SEX
...DISTINCT 表示您只想选择唯一行。 如果所选行与结果表中的另一行重复,那么将忽略重复行 (不会将其放入结果表中)。 例如,假设您需要员工作业代码的列表。 您不需要知道哪个员工有什么工作代码。 由于部门中的若干人员可能具有相同的作业代码,因此您可以使用 DISTINCT 来确保结果表仅具有唯一值。
以下示例显示了如何执行此操作:
SELECT DISTINCT JOB
FROM CORPDATA.EMPLOYEE
WHERE WORKDEPT = 'D11';
结果是两行。
| 作业 |
|---|
| DESIGNER |
| 管理器 |
如果未在 SELECT 子句中包含 DISTINCT ,那么可能会在结果中找到重复的行,因为 SQL 将返回满足搜索条件的每行的 JOB 列值。 空值被视为 DISTINCT 的重复行。
如果在 SELECT 子句中包含 DISTINCT ,并且还包含共享权重排序顺序,那么可能会返回较少的值。 排序顺序会使包含相同字符的值加权相同。 如果 "MGR" , "Mgr" 和 "mgr" 都在同一个表中,那么仅返回其中一个值。