Maison >base de données >tutoriel mysql >Comment trouver la position et l'identifiant les plus récents pour chaque titre dans une base de données ?

Comment trouver la position et l'identifiant les plus récents pour chaque titre dans une base de données ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 13:33:39689parcourir

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

Groupwise Maximum

Problème :

Récupérer la dernière position et son ID correspondant pour chaque titre dans une table contenant plusieurs postes avec la même sécurité.

Données Tableau :

id security buy_date
26 PCS 2012-02-08
27 PCS 2013-01-19
28 RDN 2012-04-17
29 RDN 2012-05-19
30 RDN 2012-08-18
31 RDN 2012-09-19
32 HK 2012-09-25
33 HK 2012-11-13
34 HK 2013-01-19
35 SGI 2013-01-17
36 SGI 2013-02-16
18084 KERX 2013-02-20
18249 KERX 0000-00-00

Solution :

Utilisation d'un LEFT JOIN et d'un filtrage NULL :

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, nous utilisons un LEFT JOIN pour fusionner la table des positions avec elle-même, en faisant correspondre les lignes par sécurité. La condition p1.buy_date < p2.buy_date garantit que p2 représente une position plus récente pour le même titre.

La clause WHERE filtre ensuite toutes les lignes où existe une position plus récente, nous laissant uniquement la dernière position pour chaque titre.

Résultats :

id security buy_date
27 PCS 2013-01-19
31 RDN 2012-09-19
34 HK 2013-01-19
36 SGI 2013-02-16
18084 KERX 2013-02-20

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