Du skal group by
alt der ikke bruger en aggregeret funktion:
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
Hvis din message
er forskellig pr. række, og du vil group by candidate_id
, så må du ikke bruge message
. I så fald skal du blot fjerne det fra din udvalgte liste, og du har ikke brug for det i din group by
liste. Det samme gælder for ethvert andet felt, du ikke bruger.
Husk, når du bruger aggregatfunktioner, skal du indeholde hvert felt i enten en aggregatfunktion eller group by
. Ellers ved SQL ikke, fra hvilken række dataene skal hentes for den returnerede række.
Opdatering:
Når du har set, hvad du leder efter, vil dette gøre tricket:
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
)