Heim >Datenbank >MySQL-Tutorial >Wie wähle ich die aktuellste Zeile mit Zeitstempel für jeden Schlüssel in SQL aus?
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!