Mengambil Data Baris Sebelumnya dalam SQL SELECT Query
Panduan ini menangani cabaran mengira perbezaan antara baris berturut-turut dalam jadual SQL. Penolakan mudah tidak akan mencukupi kerana kekurangan pertimbangan susunan baris yang wujud dalam SQL standard. Penyelesaiannya melibatkan memanfaatkan fungsi LAG
.
Fungsi LAG
mendapatkan semula data daripada baris sebelumnya dalam pernyataan SELECT
. Sintaksnya ialah:
<code class="language-sql">LAG(column_name, offset, default) OVER (ORDER BY order_column)</code>
Berikut ialah pecahan:
column_name
: Lajur yang mengandungi data yang anda perlukan daripada baris sebelumnya.offset
: Menentukan bilangan baris untuk menoleh ke belakang (1 untuk baris yang sebelum ini).default
: Nilai dikembalikan jika offset
melebihi baris pertama.order_column
: Lajur mentakrifkan susunan baris.Contoh Pelaksanaan:
Untuk mengira perbezaan antara masukan value
berturut-turut, dipesan mengikut lajur Id
:
<code class="language-sql">SELECT value - LAG(value, 1, 0) OVER (ORDER BY Id) AS difference FROM your_table;</code>
Pertanyaan ini menolak value
baris sebelumnya (mengimbangi 1) daripada value
baris semasa. Lajur Id
memastikan susunan yang betul, menghalang isu yang timbul daripada nilai Id
tidak berurutan. 0
lalai mengendalikan baris pertama, mengelakkan ralat. Hasilnya ialah lajur difference
baharu yang mempamerkan variasi yang dikira.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses dan Menggunakan Nilai Baris Sebelumnya dalam Penyata SQL SELECT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!