Heim > Datenbank > MySQL-Tutorial > Wie wähle ich nur Zeilen mit dem Maximalwert in einer bestimmten Spalte in SQL aus?

Wie wähle ich nur Zeilen mit dem Maximalwert in einer bestimmten Spalte in SQL aus?

DDD
Freigeben: 2025-01-25 21:12:14
Original
340 Leute haben es durchsucht
<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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage