MySQL Distinct Values ​​Query

MySQL Distinct Values ​​Query
Dans la plupart des bases de données, vous rencontrerez souvent des valeurs en double - sauf pour les clés primaires uniques. Par exemple, une base de données peut contenir une table de film avec des notes similaires, une année de sortie et d'autres valeurs similaires.

Par conséquent, pour obtenir une liste de valeurs uniques, telles que les différents types de cotes de film, nous devons obtenir uniquement les valeurs uniques en utilisant le mot-clé MySQL distinct.

Ce tutoriel expliquera comment utiliser le mot-clé distinct dans les requêtes MySQL pour obtenir des résultats uniques.

Avant de commencer, nous supposons que MySQL a installé sur votre système et peut effectuer des opérations dans les bases de données.

Si vous avez besoin d'une exemple de base de données avec laquelle travailler, considérez la base de données Sakila dans la ressource fournie ci-dessous:

https: // dev.mysql.com / doc / index-autre.html

Utilisation de base

La syntaxe générale de la clause distincte MySQL est:

Sélectionnez Column_list distinct sur table_name;

Ici, la colonne_list est l'ensemble des colonnes que vous souhaitez récupérer séparées par des virgules. Le nom du tableau est le tableau à partir de laquelle sélectionner lesdites valeurs.

Exemple de cas d'utilisation

Laissez-nous maintenant comment utiliser MySQL distinct en utilisant un exemple. Nous utilisons la base de données de l'exemple de Sakila pour l'illustration.

Dans la base de données Sakila, vous trouverez le tableau des acteurs, qui contient des champs comme indiqué dans la commande ci-dessous:

Desc Sakila.acteur;

La sortie décrivant les champs de table est illustrée ci-dessous:

mysql> desc sakila.acteur;
+-------------+-------------------+------+-----+
| Champ | Type | NULL | Clé |
+-------------+-------------------+------+-----+
| acteur_id | SmallInt Unsigned | Non | Pri |
| First_name | varchar (45) | Non | |
| Last_name | varchar (45) | Non | Mul |
| last_update | Timestamp | Non | |
+-------------+-------------------+------+-----+

NOTE: J'ai tronqué ce tableau pour afficher uniquement les informations pertinentes.

Si nous sélectionnons les valeurs de la table et de l'ordre des acteurs par le prénom, les chances sont élevées que nous ayons des valeurs en double, comme indiqué dans la requête ci-dessous:

Sélectionnez First_name, Last_name depuis Sakila.Ordre de l'acteur par first_name limite 10;

Nous pouvons voir sur la sortie qu'il existe des prénoms en double comme indiqué ci-dessous:

NOTE: Nous limitons la sortie aux 10 premières valeurs car le tableau contient des informations massives. N'hésitez pas à supprimer la limite et à voir combien de valeurs il y a.

+------------+-------------+
| First_name | Last_name |
+------------+-------------+
| Adam | Hopper |
| Adam | Accueil |
| Al | Garland |
| Alan | Dreyfuss |
| Albert | Nolte |
| Albert | Johansson |
| Alec | Wayne |
| Angela | Witherspoon |
| Angela | Hudson |
| Angelina | Astaire |
+------------+-------------+
10 lignes en jeu (0.00 sec)

En utilisant la clause distincte dans MySQL, nous pouvons filtrer pour obtenir des prénoms uniques du même tableau que dans la requête ci-dessous:

Sélectionnez First_name distinct depuis Sakila.Ordre de l'acteur par first_name limite 10;

Une fois que nous aurons exécuté la requête ci-dessus, nous obtiendrons une liste de prénoms uniques.

MySQL> Sélectionnez First_name distinct depuis Sakila.Ordre de l'acteur par first_name limite 10;
+------------+
| First_name |
+------------+
| Adam |
| Al |
| Alan |
| Albert |
| Alec |
| Angela |
| Angelina |
| Anne |
| Audrey |
| Bela |
+------------+
10 lignes en jeu (0.00 sec)

Exemple de cas d'utilisation: fonctions agrégées

Vous pouvez également utiliser une fonction d'agrégat MySQL distincte telle que le nombre et la somme. Par exemple, à utiliser avec le nombre de la requête ci-dessus, nous pouvons faire:

Sélectionnez Count (distinct First_name) depuis Sakila.acteur où last_name = "berry";
+----------------------------+
| Count (distinct First_name) |
+----------------------------+
| 3 |
+----------------------------+
1 ligne en jeu (0.00 sec)

La requête ci-dessus nous donne le nombre de noms des prénoms distincts où le dernier_name est Berry.

NOTE: Il est bon de garder à l'esprit que même les valeurs nulles sont considérées comme des doublons par la clause distincte. Par conséquent, si vous avez plusieurs valeurs nulles, une seule sera retournée.

Conclusion

Comme le montre ce tutoriel, vous pouvez utiliser la clause distincte MySQL pour récupérer des valeurs uniques d'un champ de table qui contient des valeurs en double.