Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengehadkan Bilangan Rekod yang Diambil dalam SQL Server Tanpa Menggunakan LIMIT?
Had rekod dalam SQL Server: LIMIT melebihi
SQL Server tidak menyokong fungsi LIMIT atau operator OFFSET yang biasa digunakan dalam sistem pangkalan data lain. Ini boleh menjadi cabaran apabila mengehadkan bilangan rekod yang diambil.
Walau bagaimanapun, SQL Server menyediakan cara alternatif untuk mencapai fungsi yang serupa. Satu cara ialah menggunakan fungsi ROW_NUMBER() dengan klausa WHERE:
<code class="language-sql">SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY name) AS row FROM sys.databases ) a WHERE row > 5 AND row <= 10</code>
Subkueri ini memberikan setiap baris nombor baris dan kemudian menapis hasil untuk memasukkan hanya baris dalam julat yang ditentukan.
Cara lain ialah menggunakan klausa TOP:
<code class="language-sql">SELECT TOP 10 * FROM stuff</code>
Walaupun TOP mengehadkan bilangan baris yang dikembalikan, ia tidak memberikan kawalan ke atas kedudukan permulaan.
Mengapa SQL Server tidak mempunyai LIMIT?
Kekurangan fungsi LIMIT dalam SQL Server mungkin disebabkan oleh pertimbangan prestasi. Menggunakan LIMIT boleh menyebabkan kemerosotan prestasi, terutamanya pada meja besar. SQL Server mengutamakan mengoptimumkan masa pelaksanaan pertanyaan.
Gunakan OFFSET dan ROWS
Untuk SQL Server 2012 dan lebih baru, anda boleh menggunakan kata kunci OFFSET dan ROWS untuk mempunyai kawalan yang lebih terperinci ke atas set hasil:
<code class="language-sql">SELECT * FROM sys.databases ORDER BY name OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY</code>
Pertanyaan ini melangkau 5 baris pertama dan mendapatkan semula 5 baris seterusnya, memberikan keupayaan mengehadkan setanding dengan LIMIT.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengehadkan Bilangan Rekod yang Diambil dalam SQL Server Tanpa Menggunakan LIMIT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!