Dapatkan rekod seterusnya/sebelumnya daripada pertanyaan MySQL yang diisih mengikut berbilang lajur
P粉006977956
P粉006977956 2024-03-22 11:08:54
0
1
309

Saya menjalankan pertanyaan melalui pangkalan data MySQL saya (MariaDB 10.3) seperti ini:

SELECT * FROM my_table ORDER BY priority DESC, expiration_date ASC, id ASC

Contoh jadual ini dengan susunan yang diberikan kelihatan seperti ini:

id ... Keutamaan tarikh_luput
3 ... 2 2022-07-01 12:00:00
7 ... 2 2022-07-03 12:00:00
6 ... 2 2022-07-04 12:00:00
9 ... 1 2022-07-02 12:00:00
4 ... 1 2022-07-05 12:00:00
11 ... 1 2022-07-05 12:00:00

Sekarang saya mempunyai ID rekod tertentu dan saya cuba mendapatkan semula rekod yang sebelum/selepas rekod tersebut dalam keputusan pertanyaan dalam susunan yang diberikan melalui SQL. Katakan saya mempunyai rekod dengan ID rekod 6,我想分别返回 ID 为 97.

Isih mengikut satu lajur unik, yang mudah diperolehi dalam satu pertanyaan, tetapi saya tidak pasti cara mengendalikan berbilang lajur bukan unik. Bolehkah seseorang memberitahu saya bagaimana untuk mencapai ini?

P粉006977956
P粉006977956

membalas semua(1)
P粉763748806

Mengikuti petua Paul Maxwell tentang LEADLAG, saya dapat menulis pertanyaan kerja seperti ini:

SELECT t.next_id 
FROM (
    SELECT id, 
        LEAD(id, 1) OVER (ORDER BY priority DESC, expiration_date ASC, id ASC) AS next_id 
    FROM my_table
) t 
WHERE t.id = ?

Dapatkan rekod sebelumnya yang sepadan dengan LAG.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan