我使用SQL Server 2008中隨着在SQL Server TOP
條款的幫助,我已經運行下面的查詢從我的表顯示系第1000行的SQL Server 2008 - 如何1001之間的行顯示到2000
Select TOP 1000 *
from Department;
現在我需要顯示來自同一個表的下一個1000個數據。任何人都可以幫我找到解決方案嗎?
我使用SQL Server 2008中隨着在SQL Server TOP
條款的幫助,我已經運行下面的查詢從我的表顯示系第1000行的SQL Server 2008 - 如何1001之間的行顯示到2000
Select TOP 1000 *
from Department;
現在我需要顯示來自同一個表的下一個1000個數據。任何人都可以幫我找到解決方案嗎?
你可以嘗試這樣的:
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY DEPARTMENT_NAME) AS rownum
FROM DEPARTMENT
) AS t
WHERE t.rownum BETWEEN 1001 AND 2001
這是在添加row_number之前在SQL Server 2000中使用的技術... – Sandr 2014-09-21 11:31:49
您可以使用ROW_NUMBER函數來獲取行的數量,然後從X乘坐人數爲Y.下面的查詢是假設你想要的結果通過ID下令:
WITH OrderedDepartments AS
(
SELECT ID, Name,
ROW_NUMBER() OVER (ORDER BY ID) AS RowNumber
FROM Department
)
SELECT ID, Name
FROM OrderedDepartments
WHERE RowNumber BETWEEN 1001 AND 2000;
如果您希望數據按特定順序列出,您需要將此順序添加到您的查詢中。在所提到的查詢中,這是在row_number計算(*'按ID *排序)的條件下添加的。沒有它,Row_number函數就無法工作。並且在您的查詢中,不保證您不會在不同的子集中收到相同的行兩次。 – Sandr 2014-09-21 11:35:22
最好的辦法是用 「Fetch(的Transact-SQL)」 的詳細信息,並在下面的鏈接提供樣品,
FETCH選項僅與光標相關。 – Sandr 2014-09-21 11:31:19
FETCH選項在這種情況下不相關,因爲它僅適用於遊標。 – 2014-09-21 13:15:08
首先,沒有* ORDER BY的'TOP' *是沒有意義的 - 你要訂購什麼,以獲得「top 1000」行?您需要決定哪個列要排序 - **然後**(並且只有這樣)「TOP」纔有意義 – 2014-09-20 09:03:12