簡體   English   中英

查詢類似於TOP 10以選擇中間記錄嗎?

[英]Query similar to TOP 10 to select inbetween records?

我有100條記錄,可以在查詢中使用“ TOP 10”選擇前10條記錄。 同樣,有什么能獲得第20至30條記錄嗎?

由於使用的是SQL Server 2005,因此可以使用“新” ROW_NUMBER()函數。 這將給您第11至20行:

SELECT  Description, Date
FROM     (SELECT  ROW_NUMBER() OVER (ORDER BY Date DESC)
             AS Row, Description, Date FROM LOG)
            AS LogWithRowNumbers
WHERE  Row >= 11 AND Row <= 20

如果您有很多記錄,則在內部SELECT子句中使用TOP X可能會加快速度,因為如果您只打算抓取11到20條記錄,則返回1000條記錄是沒有用的:

SELECT  Description, Date
FROM     (SELECT TOP 20 ROW_NUMBER() OVER (ORDER BY Date DESC)
             AS Row, Description, Date FROM LOG)
            AS LogWithRowNumbers
WHERE  Row >= 11 AND Row <= 20

資源

您應該使用ROWNUMBER()來獲取結果集的記錄數,並在引起原因的位置對其進行過濾。

SELECT * FROM   (SELECT ROW_NUMBER() OVER(ORDER BY name) AS
rownum, name , age FROM Table) AS Table1
WHERE rownum >= 2 AND rownum <= 5

----------------------------
rownum     | name |   age   |
----------------------------
   2     |John    |   25    | 
   3     |Adam    |   23    | 
   4     |Tom     |   19    |
   5     |Jame    |   22    |
----------------------------

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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