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 ?
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!