2014-11-03 26 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

相关问题