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

Clause DISTINCT SQL

Dans ce tutoriel, vous apprendrez à supprimer les valeurs répétées du jeu de résultats.

Récupérer des valeurs différentes

Lorsque vous obtenez des données à partir d'une table de base de données, le jeu de résultats peut contenir des lignes ou des valeurs répétées. Si vous souhaitez supprimer ces valeurs répétées, vous pouvez spécifier directement la clause DISTINCT après le mot-clé SELECT, comme suit :

Syntaxe

La clause DISTINCT est utilisée pour supprimer les lignes répétées du jeu de résultats :

SELECT DISTINCT column_list FROM table_name;

Ici,column_listest une liste de noms de colonnes ou de champs de base de données à obtenir leurs valeurs, séparés par des virgules (par exemplename,age,countryetc.).

Attention : Le comportement de la clause DISTINCT est similaire àUNIQUELes contraintes, à l'exception de la manière dont elles traitent les NULL, sont différentes. Deux valeurs NULL sont considérées comme uniques, mais elles ne sont pas considérées comme différentes les unes des autres.

Voyons quelques exemples pour illustrer leur fonctionnement réel.

Supposons que nous ayons dans la base de données unecustomersLe tableau, qui contient les enregistrements suivants :

+---------+--------------------+-----------+-------------+
| cust_id | cust_name          | city      | postal_code |
+---------+--------------------+-----------+-------------+
|       1 | Maria Anders       | Berlin    | 12209       |
|       2 | Fran Wilson        | Madrid    | 28023       |
|       3 | Dominique Perrier  | Paris     | 75016       |
|       4 | Martin Blank       | Turin     | 10100       |
|       5 | Thomas Hardy       | Portland  | 97219       |
|       6 | Christina Aguilera | Madrid    | 28001       |
+---------+--------------------+-----------+-------------+

Exécutez maintenant la suivante :cityToutes les lignes de la colonne.

SELECT city FROM customers;

Après exécution, vous obtiendrez la sortie suivante :

+-----------+
| ville |
+-----------+
| Berlin |
| Madrid |
| Paris |
| Turin |
| Portland |
| Madrid |
+-----------+

Si vous examinez attentivement la sortie, vous constaterez que la ville "Madrid" apparaît deux fois dans notre ensemble de résultats, ce qui n'est pas bon. D'accord, laissons-nous résoudre ce problème.

Suppression des données redondantes

Les instructions suivantes sont utilisées pour DISTINCT danscustomersListe de toutes les villes générées dans la table.

SELECT DISTINCT city FROM customers;

Après l'exécution de la commande ci-dessus, vous obtiendrez le résultat suivant :

+-----------+
| ville |
+-----------+
| Berlin |
| Madrid |
| Paris |
| Turin |
| Portland |
+-----------+

Comme vous le voyez, le jeu de résultats de cette fois n'a pas de valeurs répétées.

Attention :Si vous utilisez la clause SELECT DISTINCT sur une colonne avec plusieurs valeurs NULL, SQL conserve une valeur NULL et supprime les autres valeurs du jeu de résultats, car DISTINCT considère toutes les valeurs NULL comme identiques.