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 为 9
和 7
.
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?
Mengikuti petua Paul Maxwell tentang
LEAD
和LAG
, saya dapat menulis pertanyaan kerja seperti ini:Dapatkan rekod sebelumnya yang sepadan dengan
LAG
.