如何通过查询特定记录来获取大量数据

时间:2014-11-03 17:10:40

标签: sql-server-2008

我在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

请告诉我们如何才能实现这一目标。提前致谢。

1 个答案:

答案 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