Apabila mendapatkan semula N baris terakhir daripada pangkalan data MySQL yang berpotensi dimanipulasi, memastikan kedua-dua kronologi ( menurun) dan susunan menaik boleh mencabar. Artikel ini menangani isu ini, menyediakan penyelesaian menggunakan subkueri.
Pertanyaan berikut bertujuan untuk memilih 50 baris terakhir daripada jadual yang disusun mengikut id kunci utama dalam tertib menurun:
SELECT * FROM `table` ORDER BY id DESC LIMIT 50;
Walau bagaimanapun, pendekatan ini mempunyai kelemahan: jika mana-mana baris dipadamkan, baris berikutnya tidak akan diambil dengan tepat dalam tertib menaik.
Begitu juga, pertanyaan di bawah gagal menangani isu manipulasi:
SELECT * FROM `table` WHERE id > ((SELECT MAX(id) FROM chat) - 50) ORDER BY id ASC;
Penyelesaian menggunakan Subquery:
Untuk mengatasinya had, subkueri boleh digunakan:
SELECT * FROM ( SELECT * FROM table ORDER BY id DESC LIMIT 50 ) AS sub ORDER BY id ASC;
Pertanyaan ini memilih 50 baris terakhir daripada jadual dalam tertib menurun menggunakan subkueri, dan kemudian menyusun semula baris itu dalam tertib menaik sebelum mendapatkan semula hasil akhir.
Pendekatan ini membolehkan pengambilan semula N baris terakhir yang tepat, tanpa mengira sebarang perubahan atau pemadaman yang dibuat pada jadual, memastikan data dipaparkan dalam urutan kronologi yang dikehendaki.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali N Baris Terakhir dalam Susunan Menaik daripada Jadual MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!