Rimuovere duplicati

Completato

Le righe di una tabella devono essere sempre univoche; tuttavia, quando si seleziona solo un subset delle colonne, le righe dei risultati potrebbero non essere univoche anche se lo sono le righe originali. Ad esempio, si potrebbe avere una tabella di fornitori con il requisito che la città e lo stato (o provincia) siano univoci, in modo che non ci sia mai più di un fornitore in una città. Tuttavia, se si vogliono visualizzare solo le città e i paesi/aree geografiche in cui si trovano i fornitori, i risultati restituiti potrebbero non essere univoci. Si supponga di scrivere la query seguente:

SELECT City, CountryRegion
FROM Production.Supplier
ORDER BY CountryRegion, City;

Questa query potrebbe produrre risultati simili ai seguenti:

City

CountryRegion

Aurora

Canada

Barrie

Canada

Brampton

Canada

Brossard

Canada

Brossard

Canada

Burnaby

Canada

Burnaby

Canada

Burnaby

Canada

Calgary

Canada

Calgary

Canada

...

...

Per impostazione predefinita, la clausola SELECT include una parola chiave ALL implicita che determina questo comportamento:

SELECT ALL City, CountryRegion
FROM Production.Supplier
ORDER BY CountryRegion, City;

T-SQL supporta anche un'alternativa, la parola chiave DISTINCT, che rimuove tutte le righe di risultati duplicate:

SELECT DISTINCT City, CountryRegion
FROM Production.Supplier
ORDER BY CountryRegion, City;

Quando si usa DISTINCT, nell'esempio viene restituita solo una delle combinazioni univoche di valori nell'elenco SELECT:

City

CountryRegion

Aurora

Canada

Barrie

Canada

Brampton

Canada

Brossard

Canada

Burnaby

Canada

Calgary

Canada

...

...