Làm cách nào để bạn có thể GROUP BY id_thread
khi không có id_thread
trong bảng của bạn?
SELECT *
FROM contacts
WHERE id_receiver = 1
--- GROUP BY id_thread
--- removed
ORDER BY created DESC
LIMIT 1 --- only show one row
Dựa trên nhận xét của bạn, những gì bạn muốn là mới nhất (sắp xếp theo created
) hàng cho mọi id_thread
, là một truy vấn khác và phức tạp hơn. Thậm chí còn có một thẻ cho loại truy vấn này, có tên là [greatest-n-per-group]
.
SELECT c.*
FROM contacts AS c
JOIN
( SELECT id_thread, MAX(created) AS created
FROM contacts
WHERE id_receiver = 1
GROUP BY id_thread
) AS g
ON (g.id_thread, g.created) = (c.id_thread, c.created)
WHERE c.id_receiver = 1