重複を削除する
テーブル内の行は常に一意である必要がありますが、列のサブセットのみを選択した場合、元の行が一意であっても結果の行は一意にならないことがあります。 たとえば、市と州 (または県) は一意であり、どの市にも複数のサプライヤーが存在しないようにするという要件のある、サプライヤーのテーブルがあるとします。 しかし、サプライヤーが配置されている市と国および地域だけを表示する場合、返される結果は一意ではない可能性があります。 次のクエリを記述するとします。
SELECT City, CountryRegion
FROM Production.Supplier
ORDER BY CountryRegion, City;
このクエリを実行すると、次のような結果が返される可能性があります。
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 リスト内の値の一意の各組み合わせが 1 つだけ返されます。
City
CountryRegion
Aurora
カナダ
Barrie
カナダ
Brampton
カナダ
Brossard
カナダ
Burnaby
カナダ
Calgary
カナダ
...
...