Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Retorne os dados das linhas com a data mais recente de cada candidato_id distinto


Você deve group by tudo que não usa uma função 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 

Se sua message é diferente por linha e você deseja group by candidate_id , então você não deve estar usando message . Nesse caso, basta removê-lo da sua lista de seleção e você não precisará dele em seu group by Lista. O mesmo vale para qualquer outro campo que você não esteja usando.

Lembre-se, ao usar funções agregadas, você deve conter cada campo em uma função agregada ou no group by . Caso contrário, o SQL não saberá de qual linha extrair os dados da linha retornada.

Atualização:

Depois de ver o que você está procurando, isso fará o truque:
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
       )