【问题标题】:How to select a partial of a table for exporting using SQL?如何使用 SQL 选择表的一部分进行导出?
【发布时间】:2017-06-07 20:31:30
【问题描述】:

我有一个包含大约 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。

我该怎么做?

【问题讨论】:

  • 到目前为止,您已导出 10000000 行,但由于您没有应用 ORDER BY,因此您导出的 which 行是任意选择。没有简单的方法可以要求服务器再提供 10000000 行,但要确保这些行之前没有通过第一个查询提供给您。

标签: sql sql-server sql-server-2008 sql-server-2012


【解决方案1】:

您可以使用 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

【讨论】:

    【解决方案2】:

    您还可以在查询中使用 offset 和 fetch:

    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
    

    【讨论】:

      猜你喜欢
      • 2020-09-25
      • 2012-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2018-05-04
      • 1970-01-01
      相关资源
      最近更新 更多