Musíte group by
vše, co nepoužívá agregační funkci:
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
Pokud vaše message
se liší na řádek a vy chcete group by candidate_id
, pak nesmíte používat message
. V takovém případě jej jednoduše odeberte z vybraného seznamu a nebudete jej potřebovat ve své group by
seznam. Totéž platí pro jakékoli jiné pole, které nepoužíváte.
Pamatujte, že při používání agregačních funkcí musíte každé pole obsahovat buď v agregační funkci, nebo v group by
. Jinak SQL nebude vědět, ze kterého řádku má vytáhnout data pro vrácený řádek.
Aktualizace:
Až uvidíte, co hledáte, bude stačit toto:
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
)