从表中选择前N行

Nig*_*ker 32 mysql sql sql-server oracle

我正在进行一些分页,我需要进行一些查询并获得定义切片的结果形式.例如:我需要获得范围20n <x <40n等的所有"顶部"行.

SELECT * FROM Reflow  
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC;
Run Code Online (Sandbox Code Playgroud)

现在我需要通过名为ID的列进行滑动.

有什么建议怎么样?我需要在mysql,mssql和oracle上运行我的查询.

Bas*_*nni 52

假设您的页面大小是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    
Run Code Online (Sandbox Code Playgroud)

MySQL的:

SELECT * 
FROM Reflow  
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC
LIMIT 20 OFFSET 20
Run Code Online (Sandbox Code Playgroud)


Eri*_*ric 23

在MySql中,您可以使用以下命令从第20行开始获取10行:

SELECT * FROM Reflow  
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC
LIMIT 10 OFFSET 20 --Equivalent to LIMIT 20, 10
Run Code Online (Sandbox Code Playgroud)


小智 5

select * from table_name LIMIT 100
Run Code Online (Sandbox Code Playgroud)

记住这只适用于 MYSQL