我有100條記錄,其中我可以在查詢中使用「TOP 10」選擇前10名。同樣有什麼可以獲得20到30的記錄?查詢與TOP 10類似以選擇中間記錄?
2
A
回答
3
由於您使用的是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,因爲沒有使用返回1000條記錄,如果你只可以加快事情有點經歷20搶到記錄11:
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
1
您應該使用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 |
----------------------------
相關問題
- 1. Top-10 mysql查詢
- 2. Oracle SELECT TOP 10條記錄
- 3. 刪除記錄與選擇查詢
- 4. 從體重記錄中選擇TOP 1
- 5. 查詢來選擇記錄
- 6. SQL查詢選擇記錄
- 7. Linq查詢選擇記錄
- 8. 從選擇查詢中選擇記錄後更新查詢
- 9. 從表格中選擇10條隨機記錄而不查詢記錄數
- 10. SQL查詢選擇最近的記錄以及空記錄
- 11. 選擇查詢以選擇最新更新的記錄
- 12. 從選擇查詢中計數記錄。
- 13. 用ROWNUM選擇top n個Oracle記錄在子查詢中仍然有效?
- 14. Concat選擇類似於%string的查詢%
- 15. 在MS Dynamics CRM中選擇排名前10位的記錄
- 16. SQL查詢選擇'下一個'記錄(類似於第一個或前N)
- 17. 選擇前10條記錄,然後選擇下一條10
- 18. 選擇top n查詢 - 我可以插入n以選擇全部?
- 19. 查詢要從多條記錄中選擇一條記錄
- 20. TOP記錄與子頂記錄sql
- 21. 選擇查詢以獲得SQL Server中的總記錄數
- 22. 在SQL查詢中選擇除了最大記錄以外的所有記錄
- 23. LINQ查詢,選擇最新的記錄
- 24. Oralce查詢選擇正確的記錄
- 25. 查詢選擇重複記錄
- 26. Linq查詢選擇最前的記錄
- 27. 查詢只選擇新增記錄
- 28. 選擇查詢活動記錄codeigniter
- 29. IN查詢選擇的所有記錄
- 30. 查找類似記錄