Mysql
 sql >> база данни >  >> RDS >> Mysql

Върнете данните от редовете с най-новата дата на всеки отделен идентификатор_кандидат

Трябва да group by всичко, което не използва агрегатна функция:

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 

Ако вашето message е различно за всеки ред и искате да group by candidate_id , тогава не трябва да използвате message . В такъв случай просто го премахнете от избрания списък и няма да ви е нужен във вашата group by списък. Същото важи и за всяко друго поле, което не използвате.

Не забравяйте, че когато използвате агрегатни функции, трябва да съдържате всяко поле или в агрегатна функция, или в group by . В противен случай SQL няма да знае от кой ред да извлече данните за върнатия ред.

Актуализация:

След като видите какво търсите, това ще свърши работа:

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. Преобразувайте съществуващ PHP/MYSQL/ уебсайт в приложения за IOS/Android

  2. Ако друго е клаузата WHERE

  3. SQL ВСЕКИ И ВСИЧКИ оператори

  4. Как да изпълним MySQL команда от хост към контейнер, работещ с MySQL сървър?

  5. създаване на база данни с pdo в php