Mengira Perbezaan Antara Baris dalam Pernyataan SELECT MySQL
Masalah:
Bagaimana untuk menentukan perbezaan dalam nilai antara dua baris berikutnya dalam pernyataan MySQL SELECT? Jadual yang disediakan mengandungi data seperti kilometer, tarikh dan pengenalan kereta. Matlamatnya adalah untuk mencipta paparan yang merangkumi lajur tambahan yang menunjukkan bilangan kilometer sejak tarikh sebelumnya.
Penyelesaian:
Untuk mencapai ini, gabungan KIRI JOIN dan subquery digunakan. LEFT JOIN membolehkan kami mendapatkan semula data daripada jadual myTable, manakala subquery memastikan perbandingan dibuat dengan baris terbaharu yang mempunyai tarikh sebelum baris semasa. Pendekatan ini berkesan menghasilkan perbezaan yang diingini dalam kilometer:
SELECT mt1.ID, mt1.Kilometers, mt1.date, mt1.Kilometers - IFNULL(mt2.Kilometers, 0) AS number_km_since_last_date FROM myTable mt1 LEFT JOIN myTable mt2 ON mt2.Date = ( SELECT MAX(Date) FROM myTable mt3 WHERE mt3.Date < mt1.Date ) ORDER BY mt1.date
Penyelesaian Alternatif:
Kaedah lain melibatkan meniru fungsi lag() menggunakan hackiness MySQL:
SET @kilo=0; SELECT mt1.ID, mt1.Kilometers - @kilo AS number_km_since_last_date, @kilo := mt1.Kilometers Kilometers, mt1.date FROM myTable mt1 ORDER BY mt1.date
Keputusan:
Kedua-dua kaedah berjaya mengira perbezaan dalam kilometer antara baris berturut-turut dalam jadual yang diisih, menghasilkan paparan yang memberikan maklumat tambahan yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Antara Baris dalam Pernyataan SELECT MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!