Wszystkie powyższe odpowiedzi są poprawne, w przypadku DISTINCT w jednej kolumnie vs GROUP BY w jednej kolumnie. Każdy silnik db ma własną implementację i optymalizacje, a jeśli zależy ci na bardzo niewielkiej różnicy (w większości przypadków), musisz przetestować konkretny serwer ORAZ określoną wersję! Ponieważ implementacje mogą ulec zmianie ...
ALE, jeśli wybierzesz więcej niż jedną kolumnę w zapytaniu, DISTINCT będzie zasadniczo inny! Ponieważ w tym przypadku porówna WSZYSTKIE kolumny wszystkich wierszy, zamiast tylko jednej kolumny.
Więc jeśli masz coś takiego:
// 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
Powszechnym błędem jest myślenie, że słowo kluczowe DISTINCT rozróżnia wiersze według pierwszej określonej kolumny, ale słowo kluczowe DISTINCT jest w ten sposób ogólnym słowem kluczowym.
Dlatego ludzie muszą uważać, aby nie traktować powyższych odpowiedzi jako poprawnych we wszystkich przypadkach ... Możesz się zdezorientować i uzyskać błędne wyniki, podczas gdy wszystko, czego chciałeś, to optymalizacja!