Bạn group by
tất cả mọi thứ không phải sử dụng một chức năng tổng hợp:
SELECT candidate_id, message, max(created_unix), jobpost_id, staffuserid
FROM messages
WHERE employer_id='$employerid' AND last='company'
GROUP BY candidate_id, message, jobpost_id, staffuserid
Nếu message
của bạn là khác nhau cho mỗi hàng và bạn muốn group by candidate_id
, sau đó bạn phải không được sử dụng message
. Trong trường hợp đó, chỉ cần xóa nó khỏi danh sách lựa chọn của bạn và bạn sẽ không cần nó trong danh sách group by
của bạn. Cũng vậy với bất kỳ lĩnh vực nào khác mà bạn không sử dụng.
Hãy nhớ rằng, khi sử dụng chức năng tổng hợp, bạn phải chứa từng trường trong hàm tổng hợp hoặc group by
. Nếu không, SQL sẽ không biết từ hàng nào để kéo dữ liệu cho hàng được trả về.
Cập nhật:
Sau khi nhìn thấy những gì bạn đang tìm kiếm, điều này sẽ làm các trick:
SELECT candidate_id, message, max(created_unix), jobpost_id, staffuserid
FROM messages
WHERE employer_id='$employerid' AND last='company' AND
created_unix = (
SELECT max(subm.created_unix)
FROM messages subm
WHERE subm.candidate_id = messages.candidate_id
)
Nguồn
2011-12-23 02:27:32
có thể trùng lặp của [Lấy hàng có giá trị Tối đa cho cột] (http://stackoverflow.com/questions/121387/), [MySQL: chọn tất cả các trường tương ứng bằng MAX và GROUP BY] (http: //stackoverflow.com/questions/1305056/mysql-selecting-all-corresponding-fields-using-max-and-group-by) – outis