我正在做一些分页,我需要进行一些查询并获得定义切片的结果形式。 例如:我需要在范围20n<范围内获得所有“顶部”行。 x< 40n等。
SELECT * FROM Reflow
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC;
现在我需要通过名为ID的列进行滑动。
有任何建议如何?我需要在mysql,mssql和oracle上运行我的查询。
答案 0 :(得分:48)
假设您的页面大小为20条记录,并且您想要获得第2页,那么您可以采用以下方式:
SQL Server,Oracle:
SELECT * -- <-- pick any columns here from your table, if you wanna exclude the RowNumber
FROM (SELECT ROW_NUMBER OVER(ORDER BY ID DESC) RowNumber, *
FROM Reflow
WHERE ReflowProcessID = somenumber) t
WHERE RowNumber >= 20 AND RowNumber <= 40
MySQL的:
SELECT *
FROM Reflow
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC
LIMIT 20 OFFSET 20
答案 1 :(得分:21)
在MySql中,您可以使用以下命令从第20行开始获取10行:
SELECT * FROM Reflow
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC
LIMIT 10 OFFSET 20 --Equivalent to LIMIT 20, 10
答案 2 :(得分:0)
select * from table_name LIMIT 100
请记住,这仅适用于MYSQL
答案 3 :(得分:0)
答案 4 :(得分:0)
在SQL Server 2012中,您可以使用本机分页,以实现简洁性和最佳性能:
您的查询成为:
SELECT * FROM Reflow
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC;
OFFSET 20 ROWS
FETCH NEXT 20 ROWS ONLY;