我已经看到了很多非常可怕的方法来执行MySQL的MS SQL限制功能。
任何人都可以提出一个很好的方式来做这样的事情:
SELECT * FROM blah LIMIT 5,15;
但在MS SQL中?
干杯!
答案 0 :(得分:4)
SQL Server相当于MySQL / PostgreSQL的LIMIT语法是TOP(SQL Server 2000+),但TOP doesn't support the offset value ...
假设SQL Server 2005+,请使用:
SELECT x.*
FROM (SELECT t.*,
ROW_NUMBER() OVER (ORDER BY ?) AS rank
FROM BLAH t) x
WHERE x.rank BETWEEN 6 AND 20
请注意,您必须为排名定义排序顺序 - 替换“?”使用适当的列。
答案 1 :(得分:2)
在SQL Server中为LIMIT 5,15
获取相同内容的方法之一是使用ROW_NUMBER()
-
With t As
(
Select ...
, ROW_NUMBER() OVER ( Order By ... ) As Num
From Table
)
Select ...
From t
Where Num Between 5 And 15