[英]select the TOP N rows from a table
我正在制作一些分頁,我需要進行一些查詢並獲取定義切片的結果形式。 例如:我需要獲取 20n < x < 40n 等范圍內的所有“頂級”行。
SELECT * FROM Reflow
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC;
現在我需要按名為 ID 的列進行滑動。
有什么建議嗎? 我需要在 mysql、mssql 和 oracle 上運行我的查詢。
假設您的頁面大小是 20 條記錄,並且您想要獲得第 2 頁,那么您可以這樣做:
SQL Server、甲骨文:
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
在 MySql 中,您可以使用以下方法從第 20 行開始獲取 10 行:
SELECT * FROM Reflow
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC
LIMIT 10 OFFSET 20 --Equivalent to LIMIT 20, 10
select * from table_name LIMIT 100
記住這只適用於 MYSQL
從 SQL Server 2012 開始,您可以使用本機分頁以獲得簡潔性和最佳性能:
您的查詢變為:
SELECT * FROM Reflow
WHERE ReflowProcessID = somenumber
ORDER BY ID DESC;
OFFSET 20 ROWS
FETCH NEXT 20 ROWS ONLY;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.