sql >> Database >  >> RDS >> Mysql

mysql - query voor threadlijst van berichten met specifieke voorwaarden

U wilt het groepsgewijs maximum , die u kunt vinden door lid te worden van de Messages tabel naar een subquery die de identificerende (maximale) tijdstempel voor elke groep identificeert:

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

Bekijk het op sqlfiddle .

Houd er rekening mee dat de volgorde van mijn resultatenset afwijkt van de volgorde die in uw vraag wordt verwacht om de redenen die zijn aangegeven in mijn opmerking hierboven :




  1. 8 Nieuwe Oracle-compatibiliteitsfuncties in EnterpriseDB PPAS 9.2 Beta

  2. Hoe Mysql Race-voorwaarden op de juiste manier te vermijden?

  3. bestand wordt niet geüpload in ajax php mysql

  4. Docker wacht tot postgresql actief is