Heim > Datenbank > MySQL-Tutorial > Wie wähle ich Zeilen mit der maximalen DateTime für jedes Haus in MySQL aus?

Wie wähle ich Zeilen mit der maximalen DateTime für jedes Haus in MySQL aus?

Mary-Kate Olsen
Freigeben: 2025-01-25 06:18:09
Original
920 Leute haben es durchsucht

How to Select Rows with the Maximum Datetime for Each Home in MySQL?

Wählen Sie in MySQL die Linie mit den maximalen Werten gemäß einer anderen Gruppe

aus

Frage Anweisung

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren
Die folgende Abfrage liefert die erforderlichen Ergebnisse:

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>
Nach dem Login kopieren

Es kombiniert TT und Sub -Query (alias Groupttt) mit interner Verbindung und das Sub -Query -Abruf, um den Maximalwert jedes unterschiedlichen Home -Werts abzurufen.

    Die Verbindungsbedingungen sorgen dafür, dass der Home- und Dotetime -Wert in den beiden Tabellen entspricht.
  1. Das Ergebnis enthält alle Spalten aus der Topten -Tabelle.
  2. Hinweis: Ich habe das Datumsformat so überarbeitet, dass es das Standard -Format
  3. erfüllt, um sicherzustellen, dass MySQL korrekt analysiert werden kann. Dies ändert die Logik der Abfrage nicht, sondern nur die Richtigkeit der Daten.

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage