Maison >base de données >tutoriel mysql >Comment trouver efficacement la position la plus récente de chaque titre dans une base de données ?

Comment trouver efficacement la position la plus récente de chaque titre dans une base de données ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-05 02:07:40928parcourir

How to Efficiently Find the Most Recent Position for Each Security in a Database?

Groupwise Maximum

Vous essayez de récupérer la position la plus récente pour chaque titre d'une table donnée. Pour y parvenir, vous pouvez utiliser la requête suivante :

SELECT p1.id, 
       p1.security, 
       p1.buy_date 
       FROM positions p1
LEFT JOIN
            positions p2
                ON p1.security = p2.security
                   AND p1.buy_date < p2.buy_date
      WHERE 
      p2.id IS NULL;

Dans cette requête, la jointure gauche est utilisée pour comparer chaque ligne de la table des positions à toutes les autres lignes avec la même sécurité. La colonne buy_date est utilisée pour déterminer quelle ligne est la plus récente. La clause WHERE filtre ensuite toutes les lignes qui ne sont pas les plus récentes pour leur sécurité respective.

Le résultat de cette requête sera une table avec une ligne pour chaque sécurité, contenant l'identifiant, la sécurité et la sécurité les plus récents. buy_date pour cette sécurité.

Cette requête est plus efficace que l'approche basée sur des sous-requêtes que vous avez essayée précédemment car elle ne nécessite pas plusieurs passages dans la table des positions. Au lieu de cela, il utilise une seule jointure pour identifier la ligne la plus récente pour chaque sécurité, ce qui le rend beaucoup plus rapide pour les grands ensembles de données.

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