如果sql server 2005中的原始表不存在,则从一个表更新到另一个表
我有 2 个具有相同列的表 - T1、T2。我想根据键列从 T2 中存在的列更新表 T1 列:如果键列存在,则从 T2 更新 T1 的其余列,如果不存在,则插入从 T2 到 T1 的整行。
这个查询不起作用:
IF EXISTS (SELECT keyC FROM T2 WHERE keyC in (select keyC from T1))
UPDATE T1 SET T1.c1 = T2.c1,
T1.c2 = T2.c2,
from T2 WHERE T2.keyC in (select keyC from T1)
ELSE (INSERT INTO T1 select * from T2)
知道如何修复它吗?
提前致谢,
格雷格
I have 2 tables with the same columns - T1, T2. I want to update table T1 columns from the columns that exist in T2 based on the key column: if the key column exists then update the rest of the columns of T1 from T2, if doesnt exist, then insert the whole row from T2 to T1.
This query doesnt do the job:
IF EXISTS (SELECT keyC FROM T2 WHERE keyC in (select keyC from T1))
UPDATE T1 SET T1.c1 = T2.c1,
T1.c2 = T2.c2,
from T2 WHERE T2.keyC in (select keyC from T1)
ELSE (INSERT INTO T1 select * from T2)
Any idea how to fix it?
Thanks in advance,
Greg
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
由于您使用 SQL Server 2005,因此无法使用合并并且必须执行两条语句。一项更新,一项插入。
Since you use SQL Server 2005 you can't use merge and have to do two statements. One update and one insert.
在SQL2008中你可以使用优雅的MERGE语句:
In SQL2008 you can use the elegant MERGE statement:
对于 SQL Server 2008,请查看如何使用 MERGE 语句。
编辑:OP将问题从2008年更改为2005年
对于早期版本,您需要2次操作:
For SQL Server 2008, take a look at using the MERGE statement.
EDIT: OP changed question from 2008 to 2005
For earlier versions, you need 2 operations: