Wählen Sie in MySQL die Linie mit den maximalen Werten gemäß einer anderen Gruppe
Betrachten Sie die folgende Player -Leistungstabelle:
Ziel ist es, die Zeilen jeder verschiedenen Heimspalte abzurufen und den Maximalwert jedes Hauses zu berücksichtigen. Darüber hinaus sollten die Ergebnisse andere Spalten (Spieler usw.) enthalten.
<code class="language-sql">CREATE TABLE TopTen ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, home INT UNSIGNED NOT NULL, `datetime` DATETIME NOT NULL, player VARCHAR(6) NOT NULL, resource INT NOT NULL );</code>
Beispieldaten
Die erwarteten Ergebnisse
<code class="language-sql">INSERT INTO TopTen (id, home, `datetime`, player, resource) VALUES (1, 10, '2009-04-03', 'john', 399), (2, 11, '2009-04-03', 'juliet', 244), (5, 12, '2009-04-03', 'borat', 555), (3, 10, '2009-03-03', 'john', 300), (4, 11, '2009-03-03', 'juliet', 200), (6, 12, '2009-03-03', 'borat', 500), (7, 13, '2008-12-24', 'borat', 600), (8, 13, '2009-01-01', 'borat', 700) ;</code>
Lösung
<code>id home datetime player resource 1 10 2009-04-03 john 399 2 11 2009-04-03 juliet 244 5 12 2009-04-03 borat 555 8 13 2009-01-01 borat 700</code>
Diese Abfrage führt die folgenden Schritte aus:
es wählt alle Spalten aus der Topten -Tabelle (Alias TT) aus.
<code class="language-sql">SELECT tt.* FROM topten tt INNER JOIN (SELECT home, MAX(datetime) AS MaxDateTime FROM topten GROUP BY home) groupedtt ON tt.home = groupedtt.home AND tt.datetime = groupedtt.MaxDateTime;</code>
Es kombiniert TT und Sub -Query (alias Groupttt) mit interner Verbindung und das Sub -Query -Abruf, um den Maximalwert jedes unterschiedlichen Home -Werts abzurufen.
Das obige ist der detaillierte Inhalt vonWie wähle ich Zeilen mit der maximalen DateTime für jedes Haus in MySQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!