我在SQL Server中有一个包含10,00,000条记录的数据库表Employee
。我想通过SQL Query将这些数据分成多个文件/ 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 :(得分: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
将为100,000,并且......根据您所处的步骤。
您还没有提到要对记录进行切片的顺序,但您可以在order by
子句中指定。
更新:如果您使用的是 SQL Server 2012 ,则可以使用以下更简单的语法:
SELECT * FROM Employee
ORDER BY SortCol
OFFSET 100000 ROWS
FETCH NEXT 100000 ROWS ONLY;
如果您使用的是 SQL Server 2008 ,则可以将其用作简短形式:
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY Id) AS RowNum
FROM Employee
) AS DerivedTable
WHERE DerivedTable.RowNum BETWEEN @StartRow AND @EndRow
您应该使用自己的值替换变量@StartRow
和@EndRow
。