Maison >base de données >tutoriel mysql >Comment sélectionner les derniers enregistrements pour chaque combinaison de méthode et d'ID dans MySQL ?

Comment sélectionner les derniers enregistrements pour chaque combinaison de méthode et d'ID dans MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-18 18:40:19256parcourir

How to Select the Latest Records for Each Method and ID Combination in MySQL?

Comment récupérer les derniers enregistrements datés d'une table MySQL

Lors du stockage de données sensibles au temps dans une table MySQL, il est souvent nécessaire de récupérer les enregistrements les plus récents pour des combinaisons spécifiques de champs. L'exemple suivant montre comment y parvenir lorsqu'il s'agit d'une table de réponses RPC comportant des champs tels que des horodatages, des méthodes et des ID.

Question

Considérez une table nommée rpc_responses avec la structure suivante :

CREATE TABLE rpc_responses (
  timestamp DATE,
  method VARCHAR,
  id VARCHAR,
  response MEDIUMTEXT,
  PRIMARY KEY (timestamp, method, id)
);

Étant donné ce qui suit data :

timestamp method id response
2009-01-10 getThud 16 "....."
2009-01-10 getFoo 12 "....."
2009-01-10 getBar 12 "....."
2009-01-11 getFoo 12 "....."
2009-01-11 getBar 16 "....."

Résultat souhaité

Obtenir une liste des réponses les plus récentes pour toutes les combinaisons existantes de méthode et d'identifiant :

timestamp method id response
2009-01-10 getThud 16 "....."
2009-01-10 getBar 12 "....."
2009-01-11 getFoo 12 "....."
2009-01-11 getBar 16 "....."

Réponse

Pour ce faire, utilisez ce qui suit query :

SELECT * 
FROM (
    SELECT *,
    IF(@last_method = method, 0, 1) AS new_method_group,
    @last_method := method 
    FROM rpc_responses 
    ORDER BY method, timestamp DESC
) AS t1
WHERE new_method_group = 1;

Cette requête récupère efficacement le résultat souhaité sans avoir besoin de jointures. Il conserve également la structure de lignes souhaitée, fournissant un enregistrement distinct pour chaque combinaison unique de méthode et d'identifiant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn