DISTINCT
không hoạt động theo cách đó, các giá trị phải khác biệt trên tất cả các cột được trả về.
Bạn luôn có thể sử dụng một hàm tổng hợp trên hash
hàm và GROUP BY name
sẽ trả về một hash
giá trị cho mỗi name
:
SELECT name, min(hash) hash
FROM my_table
WHERE name LIKE '%An%'
GROUP BY name;
Xem SQL Fiddle with Demo .
Lưu ý: bằng cách sử dụng hàm tổng hợp với GROUP BY
sẽ đảm bảo rằng bạn sẽ luôn trả về giá trị mong đợi cho hash
cột. Khi bạn không GROUP BY
hoặc tổng hợp các mục trong SELECT
danh sách, bạn có thể trả về kết quả không mong đợi. (xem Tiện ích mở rộng MySQL cho GROUP BY
)
Từ MySQL Docs: