如何使用SQL选择要导出的表的一部分?
我有一个数据集,大约有2500万行。我想将其导出到ACCESS。但是,我不能将其作为一个整体导出。所以我导出了前1000万行。我使用了如下所示的代码如何使用SQL选择要导出的表的一部分?,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,我有一个数据集,大约有2500万行。我想将其导出到ACCESS。但是,我不能将其作为一个整体导出。所以我导出了前1000万行。我使用了如下所示的代码 SELECT TOP (10000000) [TRD_EVENT_DT] ,[TRD_EVENT_TM] ,[TRD_STCK_CD] ,[TRD_PR] ,[TRD_TUROVR] FROM [trade92].[dbo].[trade] 现在,我想选择第二个1000万行,然后选择最后的500万行,以便将它们导出到ACCESS
SELECT TOP (10000000) [TRD_EVENT_DT]
,[TRD_EVENT_TM]
,[TRD_STCK_CD]
,[TRD_PR]
,[TRD_TUROVR]
FROM [trade92].[dbo].[trade]
现在,我想选择第二个1000万行,然后选择最后的500万行,以便将它们导出到ACCESS
我该怎么做?您可以使用CTE:
;WITH YourQuery AS (
SELECT ROW_NUMBER() OVER (ORDER BY TRD_EVENT_TM DESC) as RowNumber, *
FROM trade
)
SELECT * FROM YourQuery
WHERE RowNumber BETWEEN 10000001 AND 20000000
假设您使用的是SQL Server,而不是其他当前标记的RDBMS。要获取最后一组行,请将WHERE子句更改为:
WHERE RowNumber > 20000000
您还可以在查询中使用偏移量和提取:
SELECT [TRD_EVENT_DT]
,[TRD_EVENT_TM]
,[TRD_STCK_CD]
,[TRD_PR]
,[TRD_TUROVR]
FROM [trade92].[dbo].[trade]
ORDER BY [TRD_EVENT_DT]
OFFSET 10000000 ROWS
FETCH NEXT 5000000 ROWS ONLY
到目前为止,您已经导出了10000000行,但由于您没有按应用
订单,您导出的哪些行是任意选择的。没有简单的方法可以要求服务器再给您10000000行,但要确保这些行以前没有通过第一次查询提供给您。