English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Frase DISTINCT SQL

In questo tutorial, imparerai come eliminare i valori duplicati dai risultati.

检索不同的值

从数据库表中获取数据时,结果集可能包含重复的行或值。 如果要删除这些重复的值,可以在SELECT关键字之后直接指定关键字DISTINCT,如下所示:

语法

DISTINCT子句用于从结果集中删除重复的行:

SELECT DISTINCT column_list FROM table_name;

在这里,column_list是用逗号分隔的要获取其值的数据库表的列名或字段名的列表(例如nameagecountry等)。

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.

Eliminare i dati duplicati

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.