删除重复项
尽管表中的行应始终唯一,但如果仅选择列的某个子集,结果行也可能不唯一,即使原始行是唯一的。 例如,可能有一个供应商表,其中要求城市和省州(或自治区/直辖市)是唯一的,以便任何城市中都不会有多个供应商。 但是,如果只想查看供应商所在的城市和国家/地区,则返回的结果可能不是唯一的。 假设编写下面的查询:
SELECT City, CountryRegion
FROM Production.Supplier
ORDER BY CountryRegion, City;
该查询可能返回如下所示的结果:
城市
CountryRegion
Aurora
加拿大
Barrie
加拿大
Brampton
加拿大
Brossard
加拿大
Brossard
加拿大
Burnaby
加拿大
Burnaby
加拿大
Burnaby
加拿大
Calgary
加拿大
Calgary
加拿大
...
...
默认情况下,SELECT 子句包括一个导致此行为的隐式 ALL 关键字:
SELECT ALL City, CountryRegion
FROM Production.Supplier
ORDER BY CountryRegion, City;
T-SQL 还支持备用的 DISTINCT 关键字,该关键字删除所有重复的结果行:
SELECT DISTINCT City, CountryRegion
FROM Production.Supplier
ORDER BY CountryRegion, City;
使用 DISTINCT 时,示例仅返回 SELECT 列表中值的其中一个唯一组合:
城市
CountryRegion
Aurora
加拿大
Barrie
加拿大
Brampton
加拿大
Brossard
加拿大
Burnaby
加拿大
Calgary
加拿大
...
...