Maison > base de données > tutoriel mysql > Comment récupérer efficacement la dernière ligne par groupe dans MySQL ?

Comment récupérer efficacement la dernière ligne par groupe dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-11-12 15:19:01
original
307 Les gens l'ont consulté

How to Efficiently Retrieve the Last Row per Group in MySQL?

Récupération de la « dernière » ligne par groupe avec MySQL

Problème :

Trouver une méthode plus efficace pour récupérer la dernière ligne pour chaque groupe d'une table MySQL, en utilisant une requête similaire à :

select * 
    from foo as a
    where a.id = (select max(id) from foo where uid = a.uid group by uid)
    group by uid;
Copier après la connexion

Solution potentielle :

Considérez cette requête alternative :

SELECT t1.* FROM foo t1
  LEFT JOIN foo t2
    ON t1.id < t2.id AND t1.uid = t2.uid
WHERE t2.id is NULL;
Copier après la connexion

Explication :

Cette requête gauche joint chaque ligne de la table avec son successeur en fonction de la colonne ID. Si aucun successeur n'existe (c'est-à-dire s'il s'agit de la dernière ligne d'un groupe), la colonne t2.id sera NULL. En filtrant les valeurs NULL, nous isolons efficacement les dernières lignes de chaque groupe.

Remarques supplémentaires :

Utilisez EXPLAIN pour analyser les performances de la requête d'origine et de l'alternative. solution.

Cette méthode est particulièrement utile pour les grands ensembles de données et les regroupements complexes. Pour les cas plus simples, d'autres approches peuvent être plus efficaces.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal