删除重复项

已完成

尽管表中的行应始终唯一,但如果仅选择列的某个子集,结果行也可能不唯一,即使原始行是唯一的。 例如,可能有一个供应商表,其中要求城市和省州(或自治区/直辖市)是唯一的,以便任何城市中都不会有多个供应商。 但是,如果只想查看供应商所在的城市和国家/地区,则返回的结果可能不是唯一的。 假设编写下面的查询:

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

加拿大

...

...