2014-11-03 70 views
-1

我在SQL Server中有一個包含10,00,000條記錄的數據庫表Employee。我想通過SQL查詢將這些數據分成多個文件/ Query(假設10次)。如何通過查詢獲取特定記錄的大量數據

所以現在我想通過SQL Query以下面的方式獲取這些數據。

1st Query - First 1,00,000 Records 
2nd Query - Second 1,00,000 Records 
3rd Query - Third 1,00,000 Records 
. 
. 
. 
. 
. 
10th Query - Last 1,00,000 Records 

請讓我知道我們如何才能做到這一點。提前致謝。

回答

0

我認爲你想實現類似分頁。根據一步,你是在

;WITH Employee_Result AS 
(
    SELECT 
     Col1, Col2, ..., 
     ROW_NUMBER() OVER (ORDER BY SortCol1, SortCol2, ...) AS RowNum 
    FROM Employee 
) 
SELECT * 
FROM Employee_Result 
WHERE RowNum >= @Offset 
AND RowNum < @Offset + @Limit 

@Offset@Limit將是10萬......

你也還沒有提及順序要切片:你可以使用這樣的事情。記錄,但您可以在order by條款中指定該記錄。

更新:如果您正在使用SQL Server 2012的,你可以使用這個簡單的語法:如果您正在使用SQL Server 2008的

SELECT * FROM Employee 
ORDER BY SortCol 
OFFSET 100000 ROWS 
FETCH NEXT 100000 ROWS ONLY; 

,你可以用這個作爲短期形式:

SELECT * 
FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY Id) AS RowNum 
    FROM Employee 
) AS DerivedTable 
WHERE DerivedTable.RowNum BETWEEN @StartRow AND @EndRow 

此時應更換變量@StartRow@EndRow用自己的價值觀。

+0

感謝您回答我的查詢。我試過這個查詢,但它不工作。它顯示OFFSET爲無效關鍵字。目前我正在使用SQL SERVER。請建議做什麼。謝謝 – 2014-11-04 06:43:36

+0

@SaurabhGupta:我更新了我的答案並添加了一個與** SQL Server 2008 **兼容的語法** – Aliweb 2014-11-04 08:59:29

+0

@SaurabhGupta:你嘗試了我在更新中提到的內容嗎? – Aliweb 2014-11-06 15:47:08

相關問題