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

mysql - заявка за списък с нишки от съобщения със специфични условия

Искате групов максимум , който може да бъде намерен, като се присъедините към Messages таблица към подзаявка, която идентифицира идентифициращия (максимален) времеви печат за всяка група:

SELECT   Message.request_id,
         Sender.username   AS sender_name,
         Receiver.username AS receiver_name,
         Message.message   AS last_message,
         Message.timestamp AS last_timestamp
FROM     Message NATURAL JOIN (
           SELECT   request_id,
                    sender_id,
                    receiver_id,
                    MAX(timestamp) timestamp
           FROM     Message
           GROUP BY request_id, sender_id, receiver_id
         ) t
    JOIN User Sender   ON   Sender.id = Message.sender_id
    JOIN User Receiver ON Receiver.id = Message.receiver_id
ORDER BY Message.request_id, last_timestamp DESC

Вижте го на sqlfiddle .

Имайте предвид, че редът на моя набор от резултати се различава от този, който се очаква във вашия въпрос поради причините, подчертани в моят коментар по-горе :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да напиша тази заявка за самостоятелно присъединяване в mysql

  2. Най-добрият начин за запазване на заявки за търсене на потребителите в ElasticSearch?

  3. множество SQL таблици с PHP за генериране на карта на сайта

  4. Система за влизане на потребители с mySQL база данни с Angular JS?

  5. Как да промените директория с данни MySQL/MariaDB по подразбиране в Linux