Penyelesaian untuk Klausa LIMIT dalam Versi Pelayan Microsoft SQL Lama
Microsoft SQL Server 2000 tidak mempunyai fungsi ROW_NUMBER()
, menjadikannya sukar untuk meniru fungsi klausa LIMIT
yang terdapat dalam pangkalan data seperti MySQL. Beberapa kaedah wujud, masing-masing mempunyai kelemahan.
Pertanyaan bersarang menggunakan TOP
ialah pendekatan biasa. Walau bagaimanapun, kaedah ini gagal apabila julat yang dikehendaki melebihi jumlah baris, menyebabkan ralat penomboran, terutamanya pada "halaman" akhir.
Teknik lain bergantung pada lajur unik dalam jadual. Ini sememangnya terhad, kerana ia bergantung pada kewujudan pengecam unik yang sesuai.
Untuk SQL Server 2005 dan lebih baru, pernyataan EXCEPT
menawarkan penyelesaian yang lebih mantap. Ini melibatkan penggabungan pertanyaan bersarang dengan operator EXCEPT
untuk menapis baris awal, dengan berkesan mencapai subset yang diingini.
Contoh Ilustrasi: Untuk mendapatkan semula baris 50 hingga 75:
<code class="language-sql">SELECT * FROM ( SELECT TOP 75 COL1, COL2 FROM MYTABLE ORDER BY COL3 ) AS foo EXCEPT SELECT * FROM ( SELECT TOP 50 COL1, COL2 FROM MYTABLE ORDER BY COL3 ) AS bar;</code>
Ringkasnya, sementara penyelesaian wujud untuk meniru LIMIT
dalam SQL Server 2000, tiada satu pun meniru kelakuannya dengan sempurna tanpa kompromi atau pergantungan pada ciri tambahan. Untuk versi yang menyokong ROW_NUMBER()
(SQL Server 2005 dan lebih baru), menggunakan fungsi itu ialah kaedah yang disyorkan dan paling berkesan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensimulasikan Klausa LIMIT dalam Microsoft SQL Server 2000 Tanpa ROW_NUMBER()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!