【问题标题】:Filling live table with records from staging table用临时表中的记录填充实时表
【发布时间】:2012-03-30 23:32:05
【问题描述】:

我在 SQL Server 2008 中有 2 个相同的表,其中一个是我的应用程序经常使用的“实时”表。我在白天定期拉下新记录并将它们插入到“临时”表中,我需要从中提取新记录并插入到 Live 表中。我不希望插入任何重复项,以防某些记录重叠。我需要查看 10 列以查看是否存在相同的记录,我查看了一些 TSQL 示例,但到目前为止没有一个有效,我还考虑过处理欺骗并仅报告 DISTINCT 值但 DISTINCT 一个适用于一条记录,我需要它为 10 条记录工作。有什么建议吗?

谢谢, 山姆

【问题讨论】:

    标签: sql sql-server-2008 tsql


    【解决方案1】:

    这是 NOT EXISTS 的理想用例 - 您可以根据需要检查任意多个条件,以验证您不会插入欺骗。

    INSERT INTO Live
    SELECT <fields>
    FROM Staging s
    WHERE NOT EXISTS (SELECT 1
                      FROM Live l
                      WHERE s.FieldA = l.FieldA
                      AND s.FieldB = l.FieldB
                      <all your checks here>...)
    

    【讨论】:

      猜你喜欢
      • 2013-06-07
      • 2018-04-05
      • 2012-08-04
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多