Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQL选择要导出的表的一部分?_Sql_Sql Server_Sql Server 2008_Sql Server 2012 - Fatal编程技术网

如何使用SQL选择要导出的表的一部分?

如何使用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

我有一个数据集,大约有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

我该怎么做?

您可以使用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行,但要确保这些行以前没有通过第一次查询提供给您。