sql >> Database teknologi >  >> RDS >> Mysql

Returner dataene fra rækkerne med den seneste dato for hvert enkelt kandidat_id

Du skal group by alt der ikke bruger en aggregeret funktion:

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 

Hvis din message er forskellig pr. række, og du vil group by candidate_id , så må du ikke bruge message . I så fald skal du blot fjerne det fra din udvalgte liste, og du har ikke brug for det i din group by liste. Det samme gælder for ethvert andet felt, du ikke bruger.

Husk, når du bruger aggregatfunktioner, skal du indeholde hvert felt i enten en aggregatfunktion eller group by . Ellers ved SQL ikke, fra hvilken række dataene skal hentes for den returnerede række.

Opdatering:

Når du har set, hvad du leder efter, vil dette gøre tricket:

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. Opgradering af Slony-I 2.0.x til seneste version 2.1.x

  2. NLS_INITCAP() Funktion i Oracle

  3. Er det muligt at bruge en MySql brugerdefineret variabel i en .NET MySqlCommand?

  4. Sådan returneres alle upålidelige CHECK-begrænsninger i SQL Server (T-SQL-eksempel)