Rumah  >  Soal Jawab  >  teks badan

Dapatkan rekod seterusnya/sebelumnya daripada pertanyaan MySQL yang diisih mengikut berbilang lajur

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粉006977956P粉006977956211 hari yang lalu286

membalas semua(1)saya akan balas

  • P粉763748806

    P粉7637488062024-03-23 10:39:29

    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.

    balas
    0
  • Batalbalas