sql >> Base de Datos >  >> RDS >> Mysql

Devuelve los datos de las filas con la fecha más reciente de cada candidato_id distinto

Debes group by todo lo que no usa una función 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 

Si su message es diferente por fila y desea group by candidate_id , entonces no debes usar message . En ese caso, simplemente elimínelo de su lista de selección y no lo necesitará en su group by lista. Lo mismo ocurre con cualquier otro campo que no esté utilizando.

Recuerde, cuando use funciones agregadas, debe contener cada campo en una función agregada o en group by . De lo contrario, SQL no sabrá de qué fila extraer los datos para la fila devuelta.

Actualización:

Después de ver lo que estás buscando, esto hará el truco:

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
       )