簡體   English   中英

從表中選擇前 N 行

[英]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

您也可以查看此鏈接

SELECT * FROM master_question WHERE 1 ORDER BY question_id ASC LIMIT 20

欲了解更多詳情,請點擊此處

從 SQL Server 2012 開始,您可以使用本機分頁以獲得簡潔性和最佳性能:

https://docs.microsoft.com/en-us/sql/t-sql/queries/select-order-by-clause-transact-sql?view=sql-server-ver15#using-offset-and-fetch-限制返回的行數

您的查詢變為:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM