Rumah >pangkalan data >tutorial mysql >Bagaimana Mengenalpasti Baris SQL Di Mana Nilai Lajur Telah Berubah?
Baris Pertanyaan dengan Nilai Lajur Berubah Menggunakan SQL
Bagaimanakah seseorang boleh menentukan kejadian perubahan nilai lajur dalam jadual? Pertanyaan ini membenarkan pengecaman baris yang nilai lajur tertentu telah mengalami pengubahsuaian.
Untuk menggambarkan, pertimbangkan jadual berikut:
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
Objektifnya adalah untuk memilih baris yang ditandakan dengan asterisk, menunjukkan perubahan nilai. Ini penting untuk menentukan selang masa yang dikaitkan dengan perubahan tersebut, yang boleh dimanfaatkan untuk pertanyaan pangkalan data lain.
Penyelesaian:
Melaksanakan pertanyaan SQL dengan fungsi tetingkap dan nombor baris, kami memperoleh yang dikehendaki baris:
;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;
Penjelasan:
Pertimbangan Tambahan:
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;
Dengan memanfaatkan kuasa fungsi tetingkap SQL, pertanyaan ini secara berkesan mendapatkan semula baris yang nilai lajur telah berubah, memberikan cerapan berharga tentang turun naik data.
Atas ialah kandungan terperinci Bagaimana Mengenalpasti Baris SQL Di Mana Nilai Lajur Telah Berubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!