Toutes les réponses ci-dessus sont correctes, pour le cas de DISTINCT sur une seule colonne vs GROUPE BY sur une seule colonne. Chaque moteur db a sa propre implémentation et optimisations, et si vous vous souciez de la très petite différence (dans la plupart des cas), alors vous devez tester contre un serveur spécifique ET une version spécifique! Comme les implémentations peuvent changer ...
MAIS, si vous sélectionnez plus d'une colonne dans la requête, le DISTINCT est essentiellement différent! Parce que dans ce cas, il comparera TOUTES les colonnes de toutes les lignes, au lieu d'une seule colonne.
Donc, si vous avez quelque chose comme:
// This will NOT return unique by [id], but unique by (id,name)
SELECT DISTINCT id, name FROM some_query_with_joins
// This will select unique by [id].
SELECT id, name FROM some_query_with_joins GROUP BY id
C'est une erreur courante de penser que le mot-clé DISTINCT distingue les lignes par la première colonne que vous avez spécifiée, mais le DISTINCT est un mot-clé général de cette manière.
Donc, les gens, vous devez faire attention à ne pas considérer les réponses ci-dessus comme correctes dans tous les cas ... Vous pourriez être confus et obtenir de mauvais résultats alors que tout ce que vous vouliez était d'optimiser!