Mendapatkan semula N Baris Terakhir daripada MySQL dalam Susunan Menaik
Mendapatkan semula N baris terakhir daripada pangkalan data MySQL boleh menjadi tugas biasa, terutamanya apabila bekerja dengan meja besar. Walau bagaimanapun, menyusun keputusan dalam tertib menaik sambil memastikan integriti data, boleh menjadi satu cabaran.
Pertimbangkan pertanyaan berikut:
SELECT * FROM `table` ORDER BY id DESC LIMIT 50;
Pada pandangan pertama, pertanyaan ini nampaknya memilih 50 baris terakhir. Walau bagaimanapun, ia berbuat demikian dalam tertib menurun (daripada terbesar kepada terkecil), yang melanggar keperluan untuk tertib menaik.
Pendekatan lain ialah:
SELECT * FROM `table` WHERE id > ((SELECT MAX(id) FROM chat) - 50) ORDER BY id ASC;
Pertanyaan ini bertujuan untuk mendapatkan semula baris dengan ID lebih besar daripada ID maksimum tolak 50. Walau bagaimanapun, ia juga gagal kerana data tertakluk kepada manipulasi dan baris boleh dipadamkan, berpotensi menjejaskan keputusan.
Penyelesaian: Pendekatan Subkueri
Untuk menangani cabaran ini, subkueri boleh digunakan:
SELECT * FROM ( SELECT * FROM table ORDER BY id DESC LIMIT 50 ) AS sub ORDER BY id ASC;
Pertanyaan ini melibatkan subquery yang memilih 50 baris terakhir dalam susunan menurun. Hasil subkueri ini kemudiannya disimpan dalam jadual sementara yang dipanggil "sub." Akhir sekali, pertanyaan luar memilih semua baris daripada "sub" dan menyusunnya dalam tertib menaik.
Pendekatan ini memastikan bahawa 50 baris terakhir dipilih, walaupun jadual dimanipulasi dan hasilnya dibentangkan dalam menaik pesanan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali N Baris Terakhir dari MySQL dalam Tertib Menaik dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!