移除重複項目

已完成

雖然資料表中的資料列一定是唯一的,但在只選取資料行子集時,即使原始資料列是唯一的,結果資料列有可能不是唯一的。 例如,您有一份供應商資料表,且城市和州 (或省) 必須是唯一的,因此任何城市不會有一個以上的供應商。 但是,如果您只想查看供應商所在的城市和國家/地區,則傳回的結果可能不是唯一的。 假設您撰寫下列查詢:

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

加拿大

...

...