在本教程中,将学习如何使用SQL Server SELECT DISTINCT
子句检索指定列列表中的唯一不同值。
SELECT DISTINCT子句简介
有时,可能希望仅在表的指定列中获取不同的值。那么请使用SELECT DISTINCT
子句,如下所示:
SELECT DISTINCT
column_name
FROM
table_name;
查询仅返回指定列中的不同值。 换句话说,它从结果集中删除列中的重复值。
如果使用多列,语法如下所示:
SELECT DISTINCT
column_name1,
column_name2 ,
...
FROM
table_name;
该查询使用SELECT
列表中所有指定列中的值组合来评估唯一性。
如果将DISTINCT
子句应用于具有NULL
值的列,则DISTINCT
子句将仅保留一个NULL
并消除其它的NULL
值。 换句话说,DISTINCT
子句将所有NULL
值视为相同的值。
SQL Server SELECT DISTINCT示例
为了方便演示,将使用示例数据库中的customers
表。表的结构如下所示:
A. DISTINCT一个字段的示例
以下语句返回customers
表中所有客户所在的所有城市:
SELECT
city
FROM
sales.customers
ORDER BY
city;
执行上面查询语句,得到以下结果 -
从查询输出中可以清楚地看到,城市是重复的。
要获取不同的城市唯一值,请按如下方式添加DISTINCT
关键字:
SELECT DISTINCT
city
FROM
sales.customers
ORDER BY
city;
执行上面查询语句,得到以下结果:
现在,查询为每组重复项返回一个不同的值。也就是说它从结果集中删除了所有重复的城市。
B. DISTINCT多列示例
以下语句查找所有客户的不同城市和州。
SELECT DISTINCT
city,
state
FROM
sales.customers
执行以下查询语句,得到以下结果 -
在此示例中,语句使用city
和state
列中的值组合来评估重复项。
C. DISTINCT带有null值示例
以下示例查找客户的不同(唯一)电话号码:
SELECT DISTINCT
phone
FROM
sales.customers
ORDER BY
phone;
执行上面查询语句,得到以下结果:
在此示例中,使用DISTINCT
子句在phone
列上,结果中删除其他NULL
仅保留一个NULL
值。
在本教程中,学习了如何使用SQL Server SELECT DISTINCT
子句检索指定列列表中的不同值。