Maison >base de données >tutoriel mysql >Comment sélectionner des lignes avec la valeur maximale dans une colonne à l'aide de SQL ?

Comment sélectionner des lignes avec la valeur maximale dans une colonne à l'aide de SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-25 20:52:10888parcourir

How to Select Rows with the Maximum Value in a Column Using SQL?

Astuce SQL : Filtrez efficacement les lignes correspondant à la valeur maximale d'une colonne

Dans la base de données MySQL, il est souvent nécessaire d'extraire du groupe d'enregistrements la ligne correspondant à la valeur maximale d'une colonne spécifique. Cet article décrit deux méthodes principales.

Méthode 1 : Sous-requête et connexion

Cette méthode utilise une sous-requête pour déterminer la valeur maximale dans chaque groupe. La sous-requête regroupe les lignes par identifiant de regroupement et renvoie la valeur maximale de la colonne spécifiée. Ensuite, joignez les résultats à la table principale en utilisant l'identifiant de regroupement et la valeur maximale comme condition de jointure.

Exemple :

<code class="language-sql">SELECT a.id, a.rev, a.contents
FROM YourTable a
INNER JOIN (
    SELECT id, MAX(rev) rev
    FROM YourTable
    GROUP BY id
) b ON a.id = b.id AND a.rev = b.rev</code>

Méthode 2 : Auto-connexion et filtrage

Une autre façon consiste à joindre la table principale à elle-même en utilisant une jointure externe gauche. La condition de jointure est appliquée à l'identifiant de regroupement et une condition supplémentaire est ajoutée pour comparer les valeurs sur les côtés gauche et droit de la jointure. Le filtre garantit que seules les lignes sans ligne correspondante à droite (c'est-à-dire la ligne avec la plus grande valeur) sont incluses dans le résultat.

Exemple :

<code class="language-sql">SELECT a.*
FROM YourTable a
LEFT OUTER JOIN YourTable b
ON a.id = b.id AND a.rev < b.rev
WHERE b.id IS NULL;</code>

Résumé

Les deux méthodes donnent les mêmes résultats et sont conformes aux normes ANSI SQL. Ils sont également relativement respectueux des performances, mais les performances réelles varient en fonction du système de base de données, de la conception du schéma et de la présence d'index. Il est recommandé de comparer les deux approches afin de déterminer la meilleure solution pour un scénario spécifique.

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