Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zwróć dane z wierszy z najnowszą datą każdego odrębnego identyfikatora kandydata

Musisz group by wszystko bez funkcji agregującej:

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 

Jeśli Twoja message różni się w każdym wierszu i chcesz group by candidate_id , nie możesz używać message . W takim przypadku po prostu usuń go z listy wyboru i nie będziesz go potrzebować w swojej group by lista. To samo dotyczy każdego innego pola, którego nie używasz.

Pamiętaj, że używając funkcji agregujących, musisz zawierać każde pole w funkcji agregującej lub group by . W przeciwnym razie SQL nie będzie wiedział, z którego wiersza pobrać dane dla zwróconego wiersza.

Aktualizacja:

Po obejrzeniu tego, czego szukasz, to załatwi sprawę:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie grupowania według na dwóch polach i liczenia w SQL

  2. Tabela wyników SQL, dopasowanie w drugiej tabeli typu SET

  3. Jak unpivot tabelę w MySQL

  4. Jak przechowywać GUID w tabelach MySQL?

  5. Dodawanie sekund do daty i godziny w MySQL