Heim >Datenbank >MySQL-Tutorial >Wie identifiziere ich SQL-Zeilen, deren Spaltenwerte sich geändert haben?
Zeilen mit geänderten Spaltenwerten mithilfe von SQL abfragen
Wie kann man die Instanzen von Spaltenwertänderungen innerhalb einer Tabelle genau bestimmen? Diese Abfrage ermöglicht die Identifizierung von Zeilen, in denen bestimmte Spaltenwerte geändert wurden.
Betrachten Sie zur Veranschaulichung die folgende Tabelle:
Value Time 0 15/06/2012 8:03:43 PM 1 15/06/2012 8:03:43 PM * 1 15/06/2012 8:03:48 PM 1 15/06/2012 8:03:53 PM 1 15/06/2012 8:03:58 PM 2 15/06/2012 8:04:03 PM * 2 15/06/2012 8:04:08 PM 3 15/06/2012 8:04:13 PM * 3 15/06/2012 8:04:18 PM 3 15/06/2012 8:04:23 PM 2 15/06/2012 8:04:28 PM * 2 15/06/2012 8:04:33 PM
Das Ziel besteht darin, die mit Sternchen markierten Zeilen auszuwählen. Wertänderungen anzeigen. Dies ist entscheidend für die Bestimmung der mit diesen Änderungen verbundenen Zeitintervalle, die für andere Datenbankabfragen genutzt werden können.
Lösung:
Implementierung einer SQL-Abfrage mit Fensterfunktionen und Zeilennummern, wir leiten die gewünschten ab Zeilen:
;WITH x AS ( SELECT value, time, rn = ROW_NUMBER() OVER (PARTITION BY Value ORDER BY Time) FROM dbo.table ) SELECT * FROM x WHERE rn = 1;
Erklärung:
Zusätzliche Überlegungen:
SELECT * FROM table WHERE value <> LAG(value) OVER (ORDER BY time);
DECLARE @x TABLE(value INT, [time] DATETIME) INSERT @x VALUES (0,'20120615 8:03:43 PM'),-- (1,'20120615 8:03:43 PM'),--* (1,'20120615 8:03:48 PM'),-- (1,'20120615 8:03:53 PM'),-- (1,'20120615 8:03:58 PM'),-- (2,'20120615 8:04:03 PM'),--* (2,'20120615 8:04:08 PM'),-- (3,'20120615 8:04:13 PM'),--* (3,'20120615 8:04:18 PM'),-- (3,'20120615 8:04:23 PM'),-- (2,'20120615 8:04:28 PM'),--* (2,'20120615 8:04:33 PM'); ;WITH x AS ( SELECT *, rn = ROW_NUMBER() OVER (ORDER BY time) FROM @x ) SELECT x.value, x.[time] FROM x LEFT OUTER JOIN x AS y ON x.rn = y.rn + 1 AND x.value <> y.value WHERE y.value IS NOT NULL;
Durch die Nutzung der Leistungsfähigkeit der Fensterfunktionen von SQL ruft diese Abfrage effektiv die Zeilen ab, in denen sich Spaltenwerte geändert haben, und liefert so wertvolle Einblicke in Datenschwankungen.
Das obige ist der detaillierte Inhalt vonWie identifiziere ich SQL-Zeilen, deren Spaltenwerte sich geändert haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!