MS SQL Server 2005中的LIMIT样式功能

时间:2011-03-01 05:55:29

标签: mysql sql sql-server

我已经看到了很多非常可怕的方法来执行MySQL的MS SQL限制功能。

任何人都可以提出一个很好的方式来做这样的事情:

SELECT * FROM blah LIMIT 5,15;

但在MS SQL中?

干杯!

2 个答案:

答案 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