Il existe trois façons, astuces, différentes d'afficher des résultats distincts dans requête SQL.
La première méthode consiste à utiliser la clause DISTINCT directement après le SELECT. Dans ce cas, ça donne :
SELECT DISTINCT ma_colonne
FROM ma_table;
Pour prendre un exemple concret on considère que nous avons une base de données qui contient une table EMPLOYES qui elle contient les noms, prenoms et dates de naissance des employés d'une entreprise. La table EMPLOYES contient les enregistrements suivants :
On veut afficher les différents noms des employés. Concrètement, le résultat de la requête SQL devra retourner 9 enregistrements puisque le nom DURAND est présent 2 fois dans la table. La requête s'écrit :
SELECT DISTINCT nom_emp
FROM employes;
Cette requete va nous afficher une colonne avec les 9 noms différents. Si maintenant, on souhaite compter le nombre de nom distincts alors la requête s'écrit :
SELECT COUNT(DISTINCT nom_emp)
FROM employes;
Cette requête va nous retourner une ligne qui contiendra le nombre de noms différents, c'est à dire 9.
Avec la clause UNIQUE, les requêtes s'écrivent exactement de la même façons mis à part le fait que l'on remplace le DISTINCT par UNIQUE. En gros, utiliser l'une ou l'autre renvoie le même résultat.
Dans notre exemple du dessus, cela donne :
SELECT UNIQUE nom_emp
FROM employes;
SELECT COUNT(UNIQUE nom_emp)
FROM employes;
La clause GROUP BY est une clause de groupe qui va permettre de grouper les résultats identiques. On peut donc l'utiliser pour grouper les résultats similaires et ne pas afficher les doublons. La requête avec un GROUP BY s'écrit :
SELECT nom_emp
FROM employes
GROUP BY nom_emp;
Cette requête va afficher une colonne qui contiendra 9 résultats, 9 lignes avec une ligne par nom.