sql-server – 跳过/忽略插入的重复行
发布时间:2020-12-12 07:06:13 所属栏目:MsSql教程 来源:网络整理
导读:我有以下表格: DataValue DateStamp ItemId Value---------- ------ -----2012-05-22 1 65412012-05-22 2 123212012-05-21 3 32 tmp_holding_DataValue DateStamp ItemId Value---------- ------ -----2012-05-22 1 65412012-05-22 4 872012-05-21 5 234 Dat
我有以下表格:
DataValue DateStamp ItemId Value ---------- ------ ----- 2012-05-22 1 6541 2012-05-22 2 12321 2012-05-21 3 32 tmp_holding_DataValue DateStamp ItemId Value ---------- ------ ----- 2012-05-22 1 6541 2012-05-22 4 87 2012-05-21 5 234 DateStamp和ItemId是主键列。 我正在做一个插入,全天候定期运行(在存储过程中): insert into DataValue(DateStamp,ItemId,Value) select DateStamp,Value from tmp_holding_DataValue; 这将数据从保持表(tmp_holding_DataValue)移动到主数据表(DataValue)中。夹持表然后被截断。 问题是,如在示例中,保持表可以包含主表中已经存在的项。由于密钥不允许重复值,因此过程将失败。 一个选项是在insert proc上放置一个where子句,但主数据表有1000万行,这可能需要很长时间。 有没有其他方法可以让程序跳过/忽略它们尝试插入的重复项? 解决方法INSERT dbo.DataValue(DateStamp,Value) SELECT DateStamp,Value FROM dbo.tmp_holding_DataValue AS t WHERE NOT EXISTS (SELECT 1 FROM dbo.DataValue AS d WHERE DateStamp = t.DateStamp AND ItemId = t.ItemId); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |