我想在SQL Server表中选择一组记录。
在SQL Server中,我可以这样做:
select TOP 40,60 *
from sometable
order by name
我想获得第40行到第60行。
谢谢。
答案 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
感谢您的所有评论。