Tất cả các câu trả lời ở trên là chính xác, đối với trường hợp DISTINCT trên một cột duy nhất so với NHÓM THEO trên một cột duy nhất. Mỗi công cụ db có triển khai và tối ưu hóa riêng và nếu bạn quan tâm đến sự khác biệt rất nhỏ (trong hầu hết các trường hợp) thì bạn phải kiểm tra máy chủ cụ thể VÀ phiên bản cụ thể! Vì việc triển khai có thể thay đổi ...
NHƯNG, nếu bạn chọn nhiều hơn một cột trong truy vấn, thì DISTINCT về cơ bản là khác nhau! Bởi vì trong trường hợp này, nó sẽ so sánh TẤT CẢ các cột của tất cả các hàng, thay vì chỉ một cột.
Vì vậy, nếu bạn có một cái gì đó như:
// 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
Đó là một lỗi phổ biến khi nghĩ rằng từ khóa DISTINCT phân biệt các hàng theo cột đầu tiên bạn đã chỉ định, nhưng DISTINCT là một từ khóa chung theo cách này.
Vì vậy, những người bạn phải cẩn thận không đưa ra các câu trả lời ở trên là chính xác cho tất cả các trường hợp ... Bạn có thể bị nhầm lẫn và nhận được kết quả sai trong khi tất cả những gì bạn muốn là tối ưu hóa!