Maison >base de données >tutoriel mysql >Comment récupérer efficacement les enregistrements les plus récents d'une table MySQL datée ?

Comment récupérer efficacement les enregistrements les plus récents d'une table MySQL datée ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-24 09:43:14156parcourir

How to Efficiently Retrieve the Most Recent Records from a Dated MySQL Table?

Récupération des enregistrements les plus récents d'une table MySQL datée

Pour sélectionner les réponses les plus récentes pour toutes les combinaisons existantes de méthode et d'identifiant dans un Table MySQL avec la structure :

Table: rpc_responses

timestamp   (date)
method      (varchar)
id          (varchar)
response    (mediumtext)

PRIMARY KEY(timestamp,method,id)

Considérez ce qui suit étapes :

  1. Créer une sous-requête pour sélectionner des groupements :

    SELECT *,
    if(@last_method=method,0,1) as new_method_group,
    @last_method:=method AS t1
    FROM rpc_responses
    ORDER BY method,timestamp DESC
    • La variable @last_method est initialisée avec une chaîne vide.
    • L'instruction if() crée une colonne new_method_group qui indique le début d'un nouveau groupe de lignes avec la même valeur de méthode.
  2. Filtre pour la première ligne de chaque groupe :

    WHERE new_method_group=1

    Cette condition garantit que seule la la ligne la plus récente pour chaque combinaison de méthode et d'horodatage est sélectionnée.

  3. Sélectionnez le Colonnes souhaitées :

    SELECT timestamp, method, id, response
    FROM t1

Cette requête renverra l'ensemble de résultats souhaité, qui inclut les réponses les plus récentes pour toutes les combinaisons existantes de méthode et d'identifiant. Il est efficace car il évite d'utiliser des jointures et exploite les variables MySQL pour suivre la transition entre les différents groupes de méthodes.

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