Você deve
group by
tudo que não usa uma função agregada: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
Se sua
message
é diferente por linha e você deseja group by candidate_id
, então você não deve estar usando message
. Nesse caso, basta removê-lo da sua lista de seleção e você não precisará dele em seu group by
Lista. O mesmo vale para qualquer outro campo que você não esteja usando. Lembre-se, ao usar funções agregadas, você deve conter cada campo em uma função agregada ou no
group by
. Caso contrário, o SQL não saberá de qual linha extrair os dados da linha retornada. Atualização:
Depois de ver o que você está procurando, isso fará o truque:
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
)