Anda harus group by
semuanya tidak menggunakan fungsi agregat:
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
Jika message
Anda berbeda per baris dan Anda ingin group by candidate_id
, maka Anda tidak boleh menggunakan message
. Dalam hal ini, cukup hapus dari daftar pilihan Anda dan Anda tidak akan memerlukannya di group by
daftar. Hal yang sama berlaku untuk bidang lain yang tidak Anda gunakan.
Ingat, saat menggunakan fungsi agregat, Anda harus memuat setiap bidang dalam fungsi agregat atau group by
. Jika tidak, SQL tidak akan tahu dari baris mana untuk menarik data untuk baris yang dikembalikan.
Pembaruan:
Setelah melihat apa yang Anda cari, ini akan berhasil:
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
)