Usted group by
todo lo que no debe utilizar 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 se debe utilizar message
. En ese caso, simplemente elimínelo de su lista de selección y no lo necesitará en su lista group by
. Lo mismo aplica para cualquier otro campo que no estés usando.
Recuerde, al usar funciones de agregado, debe contener cada campo en una función de agregado 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á buscando, esto va a hacer 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
)
posible duplicado de [Obtener la fila que tiene el valor Máx. Para una columna] (http://stackoverflow.com/questions/121387/), [MySQL: seleccionando todos los campos correspondientes utilizando MAX y GROUP BY] (http: //stackoverflow.com/questions/1305056/mysql-selecting-all-corresponding-fields-using-max-and-group-by) – outis