Du måste group by
allt som inte använder en aggregatfunktion:
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
Om ditt message
är olika per rad och du vill group by candidate_id
, då får du inte använda message
. I så fall tar du helt enkelt bort den från din valda lista och du behöver den inte i din group by
lista. Detsamma gäller för alla andra fält som du inte använder.
Kom ihåg att när du använder aggregatfunktioner måste du innehålla varje fält i antingen en aggregatfunktion eller group by
. Annars kommer SQL inte att veta från vilken rad data ska hämtas för den returnerade raden.
Uppdatering:
När du har sett vad du letar efter kommer detta att göra susen:
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
)