Je moet group by
alles zonder een aggregatiefunctie:
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
Als uw message
verschilt per rij en u wilt group by candidate_id
, dan mag u message
niet gebruiken . In dat geval verwijder je het gewoon uit je selectielijst en heb je het niet meer nodig in je group by
lijst. Hetzelfde geldt voor elk ander veld dat u niet gebruikt.
Onthoud dat wanneer u aggregatiefuncties gebruikt, u elk veld moet opnemen in een aggregatiefunctie of in de group by
. Anders weet SQL niet uit welke rij de gegevens voor de geretourneerde rij moeten worden opgehaald.
Bijwerken:
Nadat je hebt gezien waarnaar je op zoek bent, is dit voldoende:
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
)