Maison >base de données >tutoriel mysql >Comment sélectionner la ligne avec l'ID de version le plus élevé pour chaque ID dans MySQL ?

Comment sélectionner la ligne avec l'ID de version le plus élevé pour chaque ID dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-29 01:12:10834parcourir

How to Select the Row with the Highest Version ID for Each ID in MySQL?

MySQL : Contrôler la sélection des lignes renvoyées par un groupe

Dans MySQL, récupérer la ligne avec la version la plus élevée pour chaque ID peut être une tâche complexe. Cependant, plusieurs approches peuvent être utilisées pour atteindre cet objectif.

Une méthode consiste à utiliser une sous-requête :

SELECT *
FROM (SELECT * FROM table ORDER BY version_id DESC) t1
GROUP BY t1.id

Cette sous-requête trie les lignes par ordre décroissant par ID de version pour chaque identifiant. Par la suite, la requête principale regroupe les lignes triées par ID. Cette approche crée une table temporaire en mémoire, mais elle peut être efficace si un index existe sur les colonnes (id, version_id).

Une autre stratégie implique une requête imbriquée :

SELECT *
FROM (SELECT id, max(version_id) as version_id FROM table GROUP BY id) t1
INNER JOIN table t2 on t2.id=t1.id and t1.version_id=t2.version_id

Cette La requête calcule l'ID de version maximum pour chaque ID dans une sous-requête. La requête principale joint ensuite la sous-requête à la table d'origine à l'aide des colonnes ID et version_id pour récupérer les lignes avec le maximum d'ID de version.

Les deux méthodes fournissent des solutions efficaces pour sélectionner la ligne avec l'ID de version le plus élevé pour chaque ID. . L'approche la plus appropriée dépend des exigences spécifiques et des considérations de performances de l'application.

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