Gibi bir şey yapmaya çalışıyorum:
SELECT * FROM table LIMIT 10,20
veya
SELECT * FROM table LIMIT 10 OFFSET 10
ancak SQL Server kullanıyor
Bulduğum tek çözüm aşırıya kaçmış gibi görünüyor:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM sys.databases
) a WHERE row > 5 and row <= 10
Ayrıca buldum :
SELECT TOP 10 * FROM stuff;
... ancak başlangıç sınırını belirleyemediğim için yapmak istediğim şey bu değil.
Bunu yapmamın başka bir yolu var mı?
Ayrıca, sadece merak ediyorum, SQL Server'ın LIMIT
işlevi veya benzer bir şeyi desteklememesinin bir nedeni var mı? Kötü olmak istemiyorum, ama bu gerçekten DBMS'nin ihtiyaç duyduğu bir şey gibi geliyor ... Eğer öyleyse, o kadar cahil olduğum için üzgünüm! MySQL ve SQL + ile son 5 yıldır çalışıyorum ...
ROW_NUMBER()
ve bununla sınırlamakTOP
ve aralığınWHERE
bir sınırı için bir koşul elde edebilmek en iyisidir. Ayrıca,TOP
madde değişken yerine değişmez bir bilgi kullanıyorsa , çok daha iyi bir performans fark ettim