sql >> Database >  >> RDS >> Mysql

Retourneer de gegevens uit de rijen met de meest recente datum van elke afzonderlijke candidate_id

Je moet group by alles zonder een aggregatiefunctie:

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 

Als uw message verschilt per rij en u wilt group by candidate_id , dan mag u message niet gebruiken . In dat geval verwijder je het gewoon uit je selectielijst en heb je het niet meer nodig in je group by lijst. Hetzelfde geldt voor elk ander veld dat u niet gebruikt.

Onthoud dat wanneer u aggregatiefuncties gebruikt, u elk veld moet opnemen in een aggregatiefunctie of in de group by . Anders weet SQL niet uit welke rij de gegevens voor de geretourneerde rij moeten worden opgehaald.

Bijwerken:

Nadat je hebt gezien waarnaar je op zoek bent, is dit voldoende:

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. CURRENT_DATE Functie in Oracle

  2. Kolommen draaien, ongedaan maken en splitsen in Power BI Query Editor

  3. Een DML-trigger maken in SQL Server

  4. Oracle krijgt externe sleutels