Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So wählen Sie den neuesten Satz datierter Datensätze aus einer MySQL-Tabelle aus

Verwenden Sie diese Lösung mit Vorsicht:
Es wird nicht garantiert, dass es in zukünftigen Versionen von MySQL funktioniert.
Es ist nicht bekannt, dass es in Mariadb 5.5 funktioniert

Diese Abfrage kann gut funktionieren, da es keine Joins gibt.

SELECT * FROM (
    SELECT timestamp, method, id, response
    FROM rpc_responses
    WHERE 1 # some where clause here
    ORDER BY timestamp DESC
) as t1
GROUP BY method

Das "gruppieren nach" reduziert die Ergebnismenge der Methode und gibt nur 1 Zeile pro Methode zurück, die neueste, wegen des ORDER BY-Zeitstempels DESC in der inneren Abfrage.

Zu Ihrer Information, PostgreSQL hat eine Möglichkeit, dies zu tun, in die Sprache integriert:

SELECT DISTINCT ON (method) timestamp, method, id, response
FROM rpc_responses
WHERE 1 # some where clause here
ORDER BY method, timestamp DESC