sql >> Databáze >  >> RDS >> Mysql

Vraťte data z řádků s nejnovějším datem každého odlišného id kandidáta

Musíte group by vše, co nepoužívá agregační funkci:

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 

Pokud vaše message se liší na řádek a vy chcete group by candidate_id , pak nesmíte používat message . V takovém případě jej jednoduše odeberte z vybraného seznamu a nebudete jej potřebovat ve své group by seznam. Totéž platí pro jakékoli jiné pole, které nepoužíváte.

Pamatujte, že při používání agregačních funkcí musíte každé pole obsahovat buď v agregační funkci, nebo v group by . Jinak SQL nebude vědět, ze kterého řádku má vytáhnout data pro vrácený řádek.

Aktualizace:

Až uvidíte, co hledáte, bude stačit toto:

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
       )


  1. Předání názvu sloupce jako parametru v MySQL

  2. MySQL Vyberte řádky při prvním výskytu každé jedinečné hodnoty

  3. connection.select_value vrací řetězce pouze v postgresu s pg gem

  4. php – Povolení uživatelům přidávat oblíbené příspěvky