在SQL Server的表中获取一些记录集

时间:2013-11-07 05:34:32

标签: sql sql-server sql-server-2008 tsql

我想在SQL Server表中选择一组记录。

在SQL Server中,我可以这样做:

select TOP 40,60 * 
from sometable
order by name

我想获得第40行到第60行。

谢谢。

4 个答案:

答案 0 :(得分:0)

LIMIT存在于Oracle中但具有不同的参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为0(不是1):

SELECT * FROM sometbl Order by name LIMIT 40,100;  # Retrieve rows 41-100

或者你可以继续;

SELECT * FROM
(
   SELECT st.*, Row_Number() OVER (ORDER BY name) rn FROM sometable st
) 
WHERE rn BETWEEN 40 AND 60;

答案 1 :(得分:0)

使用Row_number功能并获取所需的行

WITH tmp AS  
    (SELECT *, ROW_NUMBER() OVER (ORDER BY a.name) AS 'rn', a.* FROM table a)
    SELECT * FROM tmp WHERE rn BETWEEN 40 AND 60

答案 2 :(得分:0)

试试这个

SELECT * FROM
(
  SELECT table.*, Row_Number() OVER (ORDER BY name) rank FROM table 
) 
WHERE rank BETWEEN 40 AND 60;

答案 3 :(得分:0)

我喜欢这个查询

WITH temp AS
( SELECT *,    ROW_NUMBER() OVER (ORDER BY name) AS 'RowNumber'
   FROM sometable 
) 
SELECT * FROM temp WHERE RowNumber BETWEEN 40 AND 60

感谢您的所有评论。