Nhiều thông tin tại http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/
Đây luôn là một vấn đề khó chịu trong MySQL. Đã có nhiều cách giải quyết vấn đề này, chẳng hạn như nối nhiều trường với nhau (bắt đầu bằng external_id), rồi chọn MAX () của trường đó, rồi chia nhỏ lại.
Tôi đề nghị bạn sử dụng một bảng dẫn xuất. Bảng đầu tiên (t1) bắt nguồn từ một truy vấn đơn giản trong đó bạn xác định MAX(external_id)
, sau đó bạn tham gia từ đó để lấy phần còn lại của dữ liệu.
CHỈ LÀ NẾU external_id
LÀ DUY NHẤT
SELECT
t1.group_id, some_table.id, some_table.mypath
FROM
(
SELECT group_id, MAX(external_id) AS external_id
FROM some_table
GROUP BY group_id
) as t1
INNER JOIN
sometable ON t1.external_id = sometable.external_id
WHERE ...