Rumah >pangkalan data >tutorial mysql >Bagaimana Boleh Memilih Baris N Terakhir dalam Susunan Menaik daripada Jadual MySQL?

Bagaimana Boleh Memilih Baris N Terakhir dalam Susunan Menaik daripada Jadual MySQL?

Barbara Streisand
Barbara Streisandasal
2024-12-04 02:29:12491semak imbas

How to Reliably Select the Last N Rows in Ascending Order from a MySQL Table?

Memilih Baris N Terakhir daripada MySQL

Memilih baris N terakhir daripada pangkalan data MySQL boleh menjadi tugas yang mudah menggunakan pelbagai kaedah. Walau bagaimanapun, apabila berurusan dengan lajur kunci utama yang diisih dalam tertib menaik, pendekatan konvensional mungkin menghadapi had. Artikel ini bertujuan untuk menyediakan penyelesaian yang boleh dipercayai untuk masalah ini, membolehkan manipulasi dan penghapusan rekod dalam jadual.

Masalahnya:

Matlamat asal adalah untuk mendapatkan semula 50 baris terakhir daripada jadual diisih dalam tertib menaik berdasarkan id lajur kunci utama. Walau bagaimanapun, percubaan awal menyerlahkan dua kelemahan:

  1. Mengisih baris dalam tertib menurun menggunakan ORDER BY id DESC gagal mengekalkan susunan ASC yang diingini apabila menggunakan LIMIT 50.
  2. Pertanyaan bergantung pada menolak nilai tetap daripada ID maksimum (cth., id > (SELECT MAX(id) DARI sembang) - 50) menjadi tidak boleh dipercayai apabila baris dimanipulasi.

Penyelesaian:

Untuk mengatasi cabaran ini, pendekatan yang lebih mantap menggunakan sub-pertanyaan:

SELECT * FROM
(
 SELECT * FROM table ORDER BY id DESC LIMIT 50
) AS sub
ORDER BY id ASC;

Penjelasan:

  • Sub-pertanyaan ((PILIH * DARI PESANAN jadual MENGIKUT id DESC LIMIT 50)) mendapatkan semula 50 baris terakhir dari meja sambil mengekalkan susunan menurun.
  • Bahagian luar pertanyaan (PILIH * DARI ...) membalut sub-pertanyaan dan memperkenalkan klausa ORDER BY baharu, yang mengatasi pengisihan sebelumnya dan menyusun semula baris dalam tertib menaik berdasarkan id.

Pendekatan ini dengan berkesan menangani batasan yang dihadapi dengan kaedah konvensional. Ia membenarkan:

  • Mendapatkan semula N baris terakhir dalam tertib ASC, tanpa mengira manipulasi atau pemadaman.
  • Pengendalian perubahan pada jadual, seperti penambahan atau pengalihan keluar baris , tanpa menjejaskan ketepatan pertanyaan.

Atas ialah kandungan terperinci Bagaimana Boleh Memilih Baris N Terakhir dalam Susunan Menaik daripada Jadual MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn