sql >> Databáze >  >> RDS >> Mysql

mysql - dotaz na seznam vláken se specifickými podmínkami

Chcete skupinové maximum , kterou najdete po připojení ke Messages tabulky na poddotaz, který identifikuje identifikační (maximální) časové razítko pro každou skupinu:

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

Podívejte se na sqlfiddle .

Všimněte si, že pořadí mé sady výsledků se liší od pořadí očekávaného ve vaší otázce z důvodů zvýrazněných v můj komentář výše :




  1. Vytvoření clusteru MySQL pomocí kontejnerů mysql-server docker na více serverech

  2. Hromadné vložení serveru SQL – část 2

  3. Databáze kódů PIN v Indii se skriptem pro vyhledávání polohy v php a jquery

  4. Vytvoření vyhledávacího formuláře v PHP pro vyhledávání v databázi?