Rumah > pangkalan data > tutorial mysql > Bagaimana untuk meniru Klausa LIMIT MySQL dalam Microsoft SQL Server 2000?

Bagaimana untuk meniru Klausa LIMIT MySQL dalam Microsoft SQL Server 2000?

Patricia Arquette
Lepaskan: 2025-01-08 07:24:11
asal
700 orang telah melayarinya

How to Mimic MySQL's LIMIT Clause in Microsoft SQL Server 2000?

Menerap Fungsi LIMIT MySQL dalam Microsoft SQL Server 2000

Klausa

MySQL LIMIT memudahkan mendapatkan semula bilangan baris tertentu. SQL Server 2000 tidak mempunyai persamaan langsung, yang memerlukan penyelesaian. Berikut adalah beberapa kaedah untuk mencapai hasil yang serupa:

Kaedah 1: Pertanyaan Bersarang (SQL Server 2000)

Pendekatan ini menggunakan pernyataan SELECT bersarang untuk menapis baris dalam julat yang ditentukan:

<code class="language-sql">SELECT TOP 25 *
FROM (
    SELECT TOP 75 *
    FROM table
    ORDER BY field ASC
) a
ORDER BY field DESC;</code>
Salin selepas log masuk

Ini mendapatkan semula baris 26-75 selepas membuat pesanan oleh field. Nota: Kaedah ini kurang cekap untuk set data yang besar dan tidak mengendalikan senario bukan berbilang halaman dengan anggun untuk halaman terakhir.

Kaedah 2: Memanfaatkan Lajur Unik (SQL Server 2000)

Jika jadual anda mempunyai lajur unik (cth., kunci utama), teknik ini mengecualikan baris yang telah dipilih:

<code class="language-sql">SELECT TOP n *
FROM tablename
WHERE key NOT IN (
    SELECT TOP x key
    FROM tablename
    ORDER BY key
);</code>
Salin selepas log masuk

Ini memilih n baris, tidak termasuk baris x atas, disusun mengikut lajur key. Ini juga kurang cekap untuk meja besar.

Kaedah 3: Menggunakan ROW_NUMBER() (SQL Server 2005 dan kemudian)

Untuk SQL Server 2005 dan ke atas, fungsi ROW_NUMBER() menyediakan penyelesaian yang lebih elegan:

<code class="language-sql">SELECT z2.*
FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY id) AS rownum, z1.*
    FROM ( ...original SQL query... ) z1
) z2
WHERE z2.rownum BETWEEN @offset + 1 AND @offset + @count;</code>
Salin selepas log masuk

Ini memberikan nombor baris pada setiap hasil dan kemudian menapis berdasarkan offset yang ditentukan (@offset) dan kiraan (@count). Ini biasanya kaedah yang paling cekap dan fleksibel untuk versi SQL Server yang lebih baharu.

Kaedah 4: KECUALI Penyata (SQL Server 2005 dan kemudian)

Pilihan lain untuk SQL Server 2005 dan kemudian menggunakan operator set EXCEPT:

<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>
Salin selepas log masuk

Ini memilih baris 51-75 selepas membuat pesanan dengan COL3. Sama seperti pendekatan ROW_NUMBER(), ini adalah penyelesaian yang lebih cekap untuk versi SQL Server yang lebih baharu. Walau bagaimanapun, ia kurang intuitif daripada ROW_NUMBER() untuk senario yang kompleks. Pilih kaedah yang paling sesuai dengan versi SQL Server dan saiz set data anda.

Atas ialah kandungan terperinci Bagaimana untuk meniru Klausa LIMIT MySQL dalam Microsoft SQL Server 2000?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan