Heim >Datenbank >MySQL-Tutorial >Wie wähle ich die aktuellste Zeile mit Zeitstempel für jeden Schlüssel in SQL aus?

Wie wähle ich die aktuellste Zeile mit Zeitstempel für jeden Schlüssel in SQL aus?

Barbara Streisand
Barbara StreisandOriginal
2024-12-17 16:45:11432Durchsuche

How to Select the Most Recent Timestamped Row for Each Key in SQL?

Auswählen der neuesten Zeilen mit Zeitstempel für jeden Schlüsselwert

Bei der Verwaltung von Daten über mehrere Einträge hinweg ist es häufig erforderlich, den Datensatz zu identifizieren und abzurufen, der den neuesten Zeitstempel enthält ein gegebener Schlüssel. Während ein einfacher Ansatz das Gruppieren nach dem Schlüssel und das Sortieren nach dem maximalen Zeitstempel umfassen könnte, kann dies zu Fehlern im Zusammenhang mit Feldern führen, die nicht in der Group-By-Klausel erscheinen.

Um dieses Problem zu lösen, bietet eine alternative Abfragestruktur a praktikable Lösung:

SELECT sensorID,
       timestamp,
       sensorField1,
       sensorField2
FROM sensorTable s1
WHERE timestamp = (
    SELECT MAX(timestamp)
    FROM sensorTable s2
    WHERE s1.sensorID = s2.sensorID
)
ORDER BY sensorID, timestamp;

Diese Abfrage gleicht im Wesentlichen jede Zeile in sensorTable s1 mit ihrem neuesten zeitgestempelten Gegenstück in sensorTable s2 ab. Die WHERE-Klausel filtert effektiv alle Zeilen außer denen mit dem maximalen Zeitstempel für jeden Schlüssel heraus und stellt so sicher, dass die ausgewählten Daten die aktuellsten sind. Durch Gruppieren der Ergebnisse nach Sensor-ID und Sortieren nach Zeitstempel gibt die Abfrage eine einzelne Zeile mit dem neuesten Zeitstempel für jeden Schlüssel zurück, zusammen mit den gewünschten zusätzlichen Feldern.

Das obige ist der detaillierte Inhalt vonWie wähle ich die aktuellste Zeile mit Zeitstempel für jeden Schlüssel in SQL aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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