Lorsque l’on récupère des données dans une base de données SQL, on utilise l’instruction SELECT. Cependant, outre cette commande de base, celle-ci doit être associée à d’autres instructions afin d’obtenir des résultats précis. Le mot-clé SQL DISTINCT est utilisé avec SELECT dans le but d’éliminer les doublons et ainsi d’obtenir une valeur unique. Dans ce tutoriel, vous allez découvrir comment utiliser la commande SELECT DISTINCT pour les tries des données dans un Système de Gestion de Base de Donnée MySQL.
La commande SQL DISTINCT
Comme nous l’avons mentionné ci-dessus, en SQL, la commande SELECT permet de charger toutes les données d’une table sans distinction. Dans ce cas-ci, il est possible d’avoir des lignes en doublon. Pour éviter ces doublons, il faut juste ajouter DISTINCT après le mot SELECT.
Voici la syntaxe à utiliser pour cela :
SELECT DISTINCT ma_colonne FROM nom_du_tableau
Avec cette commande, vous obtenez les données dans la colonne ma_colonne de la table nom_de_table.
SQL DISTINCT sur Oracle
Si vous utilisez Oracle comme système de Gestion de Base de Données (SGBD), le mot DISTINCT est remplacé par UNIQUE, comme dans la syntaxe ci-dessous :
SELECT UNIQUE ma_colonne FROM nom_du_tableau
Illustration de SQL DISTINCT
Nous allons illustrer cette instruction avec un exemple. Pour cela, considérons une table client comportant les noms et prénoms de chaque individu et récupérons les prénoms à l’aide de la requête suivante :
SELECT prenom FROM client
Vous pouvez remarquer que la commande retourne tous les noms, même les doublons. Le prénom Pierre est apparu 3 fois. Pour ne pas les afficher plusieurs fois, il faut donc insérer le mot DISTINCT dans la commande, comme ceci :
SELECT DISTINCT Prenom FROM client
Note : Vous pouvez utiliser l’instruction SELECT DISTINCT FROM sur une seule colonne ou un ensemble de colonnes liées.
Utilisation de DISTINCT dans les agrégations
Il est possible d’utiliser SQL DISTINCT dans l’exécution d’une agrégation. Les agrégations sont les fonctions permettant d’effectuer des opérations mathématiques ou statistiques sur un ensemble d’enregistrement. On utilise DISTINCT le plus souvent avec la fonction COUNT.
Par exemple, l’instruction ci-dessous compte et donne en retour le nombre des valeurs uniques dans la colonne nom :
SELECT COUNT(DISTINCT nom) AS Nombre FROM employe
Le résultat montre qu’il existe 9 valeurs uniques dans la table employe.
Utilisation de DISTINCT avec plusieurs colonnes
Il est tout à fait possible d’utiliser DISTINCT dans la sélection de plusieurs colonnes. Afin d’expliquer son fonctionnement, prenons la requête qui suit :
SELECT nom, Prenom FROM `employe`
Cette instruction renvoie tous les noms et prénoms présents dans la table.
Maintenant, modifions légèrement cette requête en ajoutant la clause DISTINCT :
SELECT DISTINCT nom, Prenom FROM `employe`
Ici, vous pouvez remarquer que l’instruction retourne le nom et le prénom distincts de tous les clients.
SQL DISTINCT avec GROUP BY ET ORDER BY
On peut utiliser les instructions GROUP BY et ORDER BY pour obtenir des résultats équivalents à DISTINCT. Prenons par exemple cette requête :
SELECT nom, Prenom FROM `employe` GROUP BY nom, Prenom ORDER BY nom, Prenom
Cette instruction utilise la clause GROUP BY pour donner en retour des noms distincts avec le prénom.
Cette requête est équivalente à la requête qui utilise l’opérateur DISTINCT :
SELECT DISTINCT nom, Prenom FROM `employe`
DISTINCT et les valeurs nulles
Lorsque DISTINCT trouve dans une colonne plusieurs lignes de valeur nulle, il les traite comme des doublons les uns des autres. De ce fait, dans une colonne comportant plusieurs valeurs nulles, l’instruction qui inclut DISTINCT retournera une valeur nulle.
Pour résumer, la clause DISTINCT renvoie une seule valeur unique des données fournies même s’il y a plusieurs données identiques. La clause DISTINCT n’ignore pas la valeur nulle comme le font certaines clauses en SQL. Maintenant, vous pouvez utiliser cette clause afin d’obtenir des résultats uniques et précis.
Nous terminons cet article ici. Si vous souhaitez apprendre plus d’instructions SQL, il existe plusieurs articles sur ce sujet sur notre blog. Nous vous invitons également à télécharger cette formation sur Spark avec le langage Scala si vous souhaitez en apprendre davantage sur le domaine du Big Data.
je me demandé si avec un join avec plusieurs table ca marcherait ???
Bonjour, de quelle jointure parlez-vous ? Quel est le cas d’usage ?