如果存在则更新else在SQL Server 2008表中插入记录

时间:2011-12-12 14:56:56

标签: sql sql-server-2008

我有一个临时表,想要将数据插入Main表,所以我想检查从登台到主表的数据,如果存在则更新记录,否则插入新记录。这里的问题是分段和主表没有任何基于我可以比较值的键列。

是否可以不使用关键列,即两个表上的主键?如果有,请,建议我如何。

提前致谢。

2 个答案:

答案 0 :(得分:4)

如果一行中没有唯一键或一组数据来定义唯一性,那么没有。

数据集可以是每列中数据的组合,创建将提供唯一性的部分之和;但是,如果不接触您的数据,您需要做出决定。

答案 1 :(得分:0)

您编写WHERE子句以包含使您的记录唯一的所有字段(即,决定记录是新的还是应该更新的字段。)

请看一下这篇文章(http://blogs.msdn.com/b/miah/archive/2008/02/17/sql-if-exists-update-else-insert.aspx),了解如何构建它。

如果你使用的是SQL Server 2008r2,你也可以使用MERGE语句 - 我没有在没有键的表上尝试过,所以我不知道它是否适合你。