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