La requête SQL DISTINCT est utilisée pour extraire des valeurs uniques des tables à l'aide de l'instruction SELECT dans le SQL.
Il peut arriver que vous souhaitiez extraire les valeurs uniques des tables, mais que des valeurs en double soient également présentes dans la table. Dans ce cas, vous devez utiliser la requête SELECT DISTINCT pour éliminer les valeurs en double et récupérer les valeurs uniques de la table.
Syntaxe de l'instruction SELECT DISTINCT :
SELECT DISTINCT columnname1, columnname2 FROM table_name;
Considérez les tables d'employés existantes qui ont les enregistrements suivants :
ID EMPLOYEE | FIRST_NAME | LAST_NAME | SALAIRE | VILLE | DÉPARTEMENT | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOÏDA | ORACLE | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGAR | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | Bombay | TEST | 4 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | Bombay | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | Bombay | TEST | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOÏDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
Comprenons le SELECT DISTINCT à l'aide d'un exemple.
Exemple 1 : Rédigez une requête pour récupérer les détails des employés dont le salaire est supérieur à 55 000 sans utiliser le mot-clé DISTINCT.
SELECT * FROM EMPLOYEES WHERE SALARY > 55000;
Dans la déclaration ci-dessus, nous avons extrait les détails de l'employé de la table de l'employé dont le salaire est supérieur à 55 000, y compris les valeurs en double.
Le résultat de l'instruction suivante :
ID EMPLOYEE | FIRST_NAME | LAST_NAME | SALAIRE | VILLE | DÉPARTEMENT | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOÏDA | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGAR | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | Bombay | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | Bombay | TEST | 4 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
Le résultat ci-dessus montre que nous avons récupéré les détails des employés, y compris les valeurs en double.
Exemple 2 : Écrivez une requête pour afficher le salaire des employés de la table des employés dont le salaire des employés est supérieur à 55 000 en utilisant le mot-clé DISTINCT.
SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;
Dans l'instruction ci-dessus, nous récupérons le salaire de l'employé de la table de l'employé dont le salaire est supérieur à 55 000, où nous éliminons les valeurs en double. Le salaire distinct affichera le salaire unique de la table de l'employé.
Le résultat de l'instruction suivante :
SALAIRE |
65 000 |
60 000 |
55 500 |
65 500 |
58 500 |
60500 |
Dans le premier exemple, nous avons récupéré les détails de l'employé dont le salaire est supérieur à 55 000. Le résultat de la requête inclut des valeurs en double. Mais dans le deuxième exemple, nous exécutons la même requête pour afficher le salaire d'un employé dont le salaire est supérieur à 55000. La requête affiche le résultat en éliminant les valeurs en double car nous avons utilisé le mot clé DISTINCT suivi de la colonne salaire.
Exemple 3 : Rédigez une requête pour afficher la ville et le salaire des employés à partir de la table des employés sans utiliser de mot-clé distinct.
SELECT SALARY, CITY FROM EMPLOYEES;
Nous avons affiché le salaire de l'employé et le nom de la ville du tableau de l'employé dans la déclaration ci-dessus, y compris les valeurs en double.
Le résultat de l'instruction suivante :
SALAIRE | VILLE |
65 500 | PUNE |
60 000 | NOÏDA |
50 500 | JAIPUR |
55 500 | CHANDIGAR |
65 500 | PUNE |
50 000 | Bombay |
55 500 | PUNE |
50 500 | JAIPUR |
58 500 | Bombay |
60500 | Bombay |
54 500 | NOÏDA |
60 000 | DELHI |
55 500 | DELHI |
Exemple 4 : Écrivez une requête pour afficher la ville et le salaire des employés à partir de la table des employés en utilisant des mots-clés distincts.
SÉLECTIONNER UN SALAIRE DISTINCT, VILLE DES EMPLOYÉS ;
Nous avons récupéré le salaire et la ville de l'employé à partir de la table des employés dans la déclaration ci-dessus. Mais nous avons récupéré une valeur unique qui n'est pas répétée dans toute la table à l'aide du mot-clé DISTINCT.
Le résultat de l'instruction suivante :
SALAIRE | VILLE |
65 500 | PUNE |
60 000 | NOÏDA |
50 500 | JAIPUR |
55 500 | CHANDIGAR |
50 000 | Bombay |
55 500 | PUNE |
58 500 | Bombay |
60500 | Bombay |
54 500 | NOÏDA |
60 000 | DELHI |
55 500 | DELHI |
Exemple 5 : Écrivez une requête pour afficher le nom et le service d'un employé à partir de la table des employés où le nom du service commence par 'O' sans utiliser le mot-clé DISTINCT ;
SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
Dans la déclaration ci-dessus, nous avons récupéré les noms de famille des employés, les départements de la table des employés des employés dont les noms de département commencent par 'O', y compris les valeurs en double.
Le résultat de l'instruction suivante :
LAST_NAME | DÉPARTEMENT |
MISHRA | ORACLE |
SHARMA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
Seuls quatre enregistrements sont affichés pour les employés dont le service commence par 'O'.
Exemple 6 : Écrivez une requête pour afficher le nom et le service d'un employé à partir de la table des employés où le nom du service commence par 'O' en utilisant le mot-clé DISTINCT ;
SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
Nous avons utilisé la même requête dans l'exemple 5, juste ajouté le mot-clé DISTINCT juste avant le nom des colonnes qui affichera les valeurs uniques de la table des employés dont le nom du service commence par 'O'.
Le résultat de l'instruction suivante :
LAST_NAME | DÉPARTEMENT |
MISHRA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
La même requête que nous avons exécutée dans la requête ci-dessus, nous avons ajouté le mot-clé DISTINCT juste avant les colonnes. La sortie que nous obtenons diffère de l'exemple ci-dessus car l'affichage du résultat a des valeurs uniques.
Exemple 7 : Écrivez une requête pour compter le salaire des employés à partir de la table des employés sans utiliser de mot-clé distinct.
SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;
Dans la déclaration ci-dessus, nous avons compté le nombre total de salaires de la table de l'employé, y compris les valeurs en double.
Le résultat de l'instruction suivante :
SALAIRE TOTAL |
13 |
Exemple 8 : Écrivez une requête pour compter le salaire des employés à partir de la table des employés en utilisant un mot-clé distinct.
SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;
Dans la déclaration ci-dessus, nous avons compté le nombre total de salaires de la table de l'employé, à l'exclusion des valeurs en double.
Le résultat de l'instruction suivante :
SALAIRE TOTAL |
8 |