Devi group by
tutto ciò che non utilizza una funzione di aggregazione:
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 il tuo message
è diverso per riga e vuoi group by candidate_id
, allora non devi usare message
. In tal caso, rimuovilo semplicemente dall'elenco selezionato e non ti servirà nel tuo group by
elenco. Lo stesso vale per qualsiasi altro campo che non stai utilizzando.
Ricorda, quando utilizzi le funzioni di aggregazione, devi contenere ogni campo in una funzione di aggregazione o nel group by
. In caso contrario, SQL non saprà da quale riga estrarre i dati per la riga restituita.
Aggiornamento:
Dopo aver visto cosa stai cercando, questo farà il trucco:
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
)