Saya mencoba melakukan sesuatu seperti:
SELECT * FROM table LIMIT 10,20
atau
SELECT * FROM table LIMIT 10 OFFSET 10
tetapi menggunakan SQL Server
Satu-satunya solusi yang saya temukan sepertinya berlebihan:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
Saya juga menemukan :
SELECT TOP 10 * FROM stuff;
... tapi bukan itu yang ingin saya lakukan karena saya tidak bisa menentukan batas awal.
Apakah ada cara lain bagi saya untuk melakukan itu?
Juga, hanya ingin tahu, apakah ada alasan mengapa SQL Server tidak mendukung LIMIT
fungsi atau yang serupa? Saya tidak ingin menjadi kejam, tapi itu benar-benar terdengar seperti sesuatu yang dibutuhkan DBMS ... Jika ya, maka saya minta maaf karena begitu bodoh! Saya telah bekerja dengan MySQL dan SQL + selama 5 tahun terakhir jadi ...
ROW_NUMBER()
dan membatasi denganTOP
untuk lebar rentang danWHERE
kondisi untuk batas jangkauan adalah yang terbaik yang bisa saya capai. Saya juga memperhatikan kinerja yang jauh lebih baik jikaTOP
klausa menggunakan variabel literal dan bukan variabel