Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment sélectionner l'ensemble d'enregistrements datés le plus récent à partir d'une table mysql

Utilisez cette solution avec prudence :
il n'est pas garanti de fonctionner dans les futures versions de mysql
il n'est pas connu de fonctionner dans mariadb 5.5

Cette requête peut fonctionner correctement, car il n'y a pas de jointures.

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

Le "group by" réduit le jeu de résultats sur la méthode et ne renvoie qu'une seule ligne par méthode, la plus récente, en raison de l'horodatage ORDER BY DESC dans la requête interne.

Pour votre information, PostgreSQL a un moyen de le faire intégré au langage :

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