使用SQL DISTINCT操作符消除重复的结果
DISTINCT
在本教程中,我们将学习如何使用SQL DISTINCT操作符消除结果集中重复的行。
在SELECT语句返回的结果集中可能包含重复的行。为了消除重复,可以使用 DISTINCT关键字:
SELECT
column_1, column2
FROM
table_name;
指定DISTINCT后,数据库引擎使用选择列的值来判断结果集中行的唯一性。如果选择只有一列,就使用这列的值来判断唯一性。如果选择了多个列,则将基于这些列中的值的组合来判断行的唯一性。
选择员工所在的城市:
city
employees
有的员工是在同一个城市的,比如London, 要删除掉重复的结果,这时我们就可以是DISTINCT关键字
要查找员工所在的唯一city和country的列表,您可以在DISTINCT后面指定city和country列:
city和country列的组合值将用于确定结果集中行的唯一性。
city, country
employees;
比如很多国家都有城市叫圣地亚哥(Santiago)的, 如果通过city列进行消除重复,结果就存在不确定性。通过两列就能筛选出是哪个国家的圣地亚哥。
圣地亚哥(Santiago)
特殊情况,如果查询的结果中包含了NULL值,DISTINCT 会将NULL 视为彼此的副本,所以只会返回一个NULL值
region
除了用于消除行重复之外,还可以将DISTINCT与聚合函数一起使用:
COUNT: COUNT(DISTINCT column)对结果集中不同的值进行计数。SUM: SUM(DISTINCT column)用来计算不同值的和。
COUNT
SUM
例如,要统计员工所在不同城市的数量:
(
city)
要计算 item 表中不同listprice单价的总和,可以使用DISTINCT 和SUM() 函数如下:
listprice)
item
ALL
在这里需要提一下 关键字ALL。与DISTINCT不同,ALL用于包含结果集中包含重复行的所有行。SELECT 语句默认就是使用ALL, 所以你不需要显示指定它。
下面两个语句结果是一样的:
column_1, column_2
table
;
原文链接:https://codingdict.com/