Maison > base de données > tutoriel mysql > Comment sélectionner uniquement les lignes avec la valeur maximale dans une colonne spécifique dans SQL ?

Comment sélectionner uniquement les lignes avec la valeur maximale dans une colonne spécifique dans SQL ?

DDD
Libérer: 2025-01-25 21:12:14
original
341 Les gens l'ont consulté
<p><img src="https://img.php.cn/upload/article/000/000/000/173781074242774.jpg" alt="How to Select Only Rows with the Maximum Value in a Specific Column in SQL? "></p> <h2>SQL sélectionne uniquement les lignes avec une valeur maximale dans la colonne</h2> <h3>Aperçu</h3> <p>Étant donné un tableau contenant des lignes en double, la tâche consiste à sélectionner uniquement la ligne avec la valeur maximale dans une colonne spécifique. </p> <h3>Solution</h3> <p><strong>Méthode 1 : Regroupement et agrégation</strong></p> <p>La solution la plus directe est d'utiliser la clause <code>GROUP BY</code> et la fonction d'agrégation <code>MAX()</code> : </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><code class="language-sql">SELECT id, MAX(rev) FROM YourTable GROUP BY id</code></pre><div class="contentsignin">Copier après la connexion</div></div> <p>Cela renverra l'identifiant du groupe (id) et la valeur de rev maximale pour chaque groupe. </p> <p><strong>Méthode 2 : Auto-connexion et filtrage</strong></p> <p>Une approche plus avancée consiste à effectuer une jointure gauche avec la table elle-même en utilisant la colonne id comme condition de jointure : </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><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></pre><div class="contentsignin">Copier après la connexion</div></div> <p>Cette approche joint d'abord chaque ligne avec toutes les autres lignes avec le même identifiant. Il utilise ensuite l'opérateur <code><</code> dans la condition de jointure pour supprimer toutes les lignes dont la valeur rev est supérieure à la ligne actuelle. Enfin, la sous-requête garantit que seules les lignes avec une valeur de rev plus élevée et qui n'ont aucune correspondance sont renvoyées. </p> <h3>Résumé</h3> <p>Les deux méthodes produisent le même résultat, fournissant la ligne avec la plus grande valeur rev pour chaque identifiant unique. Le choix entre les deux méthodes dépend de considérations de performances et de lisibilité. Une analyse comparative est recommandée pour déterminer la meilleure approche pour une base de données et un ensemble de données spécifiques. </p>

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal