sql-server – 跳过/忽略插入的重复行
发布时间:2020-05-24 08:18:27 所属栏目:MsSql 来源:互联网
导读:我有以下表格: DataValue DateStamp ItemId Value---------- ------ -----2012-05-22 1 65412012-05-22 2 123212012-05-21 3 32 tmp_holding_DataValue DateStamp ItemId Va
|
我有以下表格: 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); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- sql-server – SQL Server获取日期字段,如果少于
- sql-server-2008 – 从sql server 2000迁移到200
- sql-server – Delphi:“参数对象定义不正确.提
- 如果’orderby’值相同,为什么Oracle会返回特定的
- 如何解决这个“SQL语句被忽略”错误?
- SQLServer 2008中SQL增强之三 Merge(在一条语句中
- sql-server-2005 – SSIS脚本组件写入变量
- 将数据从SQL Server导出到Excel(SSIS)时如何避免
- sql – MS Access:WHERE-EXISTS子句不能处理视图
- sql – 删除基于列上相同值的重复记录并保持最新
热点阅读
