English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai come eliminare i valori duplicati dai risultati.
从数据库表中获取数据时,结果集可能包含重复的行或值。 如果要删除这些重复的值,可以在SELECT关键字之后直接指定关键字DISTINCT,如下所示:
DISTINCT子句用于从结果集中删除重复的行:
SELECT DISTINCT column_list FROM table_name;
在这里,column_list是用逗号分隔的要获取其值的数据库表的列名或字段名的列表(例如name,age,country等)。
Attenzione: DISTINCT子句的行为类似于UNIQUE约束,除了它对待null的方式不同。 两个NULL值被认为是唯一的,而同时又不认为它们是彼此不同的。
让我们看一些示例,演示其实际工作方式。
假设我们在数据库中有一个customers表,其中包含以下记录:
+---------+--------------------+-----------+-------------+ | cust_id | cust_name | city | postal_code | +---------+--------------------+-----------+-------------+ | 1 | Maria Anders | Berlino | 12209 | | 2 | Fran Wilson | Madrid | 28023 | | 3 | Dominique Perrier | Parigi | 75016 | | 4 | Martin Blank | Torino | 10100 | | 5 | Thomas Hardy | Portland | 97219 | | 6 | Christina Aguilera | Madrid | 28001 | +---------+--------------------+-----------+-------------+
Esegui ora la seguente istruzione, che restituisce questa tabella:cityTutte le righe della colonna.
SELECT city FROM customers;
Dopo l'esecuzione, otterrai l'output seguente:
+-----------+ | città | +-----------+ | Berlino | | Madrid | | Parigi | | Torino | | Portland | | Madrid | +-----------+
Se guardi attentamente l'output, noterai che la città “Madrid” appare due volte nel nostro set di risultati, questo non è bene. Bene, risolviamo questo problema.
Le seguenti dichiarazioni vengono utilizzate per DISTINCT percustomersGenera l'elenco di tutte le città nella tabella.
SELECT DISTINCT city FROM customers;
Dopo l'esecuzione dell'ordine sopra riportato, otterrete l'output seguente:
+-----------+ | città | +-----------+ | Berlino | | Madrid | | Parigi | | Torino | | Portland | +-----------+
Come potete vedere, il risultato di questa volta non contiene valori ripetuti.
Attenzione:Se si utilizza la dichiarazione SELECT DISTINCT su una colonna con più valori NULL, SQL mantiene un valore NULL e elimina gli altri valori dal risultato, poiché DISTINCT considera tutti i valori NULL come uguali.