<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 wählt nur Zeilen mit dem Maximalwert in der Spalte aus</h2>
<h3>Übersicht</h3>
<p>Bei einer Tabelle mit doppelten Zeilen besteht die Aufgabe darin, nur die Zeile mit dem Maximalwert in einer bestimmten Spalte auszuwählen. </p>
<h3>Lösung</h3>
<p><strong>Methode 1: Gruppierung und Aggregation</strong></p>
<p>Die direkteste Lösung ist die Verwendung der <code>GROUP BY</code>-Klausel und der <code>MAX()</code>-Aggregatfunktion: </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">Nach dem Login kopieren</div></div>
<p>Dadurch werden die Gruppenkennung (ID) und der maximale Drehzahlwert für jede Gruppe zurückgegeben. </p>
<p><strong>Methode 2: Selbstverbindung und Filterung</strong></p>
<p>Ein fortgeschrittenerer Ansatz besteht darin, einen Left-Join mit der Tabelle selbst durchzuführen und dabei die ID-Spalte als Join-Bedingung zu verwenden: </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">Nach dem Login kopieren</div></div>
<p>Dieser Ansatz verbindet zunächst jede Zeile mit allen anderen Zeilen mit derselben ID. Anschließend wird der Operator <code><</code> in der Join-Bedingung verwendet, um alle Zeilen mit einem höheren Rev-Wert als der aktuellen Zeile zu löschen. Schließlich stellt die Unterabfrage sicher, dass nur Zeilen mit einem höheren Rev-Wert zurückgegeben werden, für die es keine Übereinstimmungen gibt. </p>
<h3>Zusammenfassung</h3>
<p>Beide Methoden führen zum gleichen Ergebnis und liefern die Zeile mit dem größten Rev-Wert für jede eindeutige ID. Die Wahl zwischen den beiden Methoden hängt von Leistungsaspekten und Lesbarkeit ab. Benchmarking wird empfohlen, um den besten Ansatz für eine bestimmte Datenbank und einen bestimmten Datensatz zu ermitteln. </p>
Das obige ist der detaillierte Inhalt vonWie wähle ich nur Zeilen mit dem Maximalwert in einer bestimmten Spalte in SQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!