Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将表1中的数据插入表2(如果不存在),否则更新表2中的数据以匹配表1。在任何一种情况下,从表1中删除_Sql_Sql Server_Database - Fatal编程技术网

Sql 将表1中的数据插入表2(如果不存在),否则更新表2中的数据以匹配表1。在任何一种情况下,从表1中删除

Sql 将表1中的数据插入表2(如果不存在),否则更新表2中的数据以匹配表1。在任何一种情况下,从表1中删除,sql,sql-server,database,Sql,Sql Server,Database,我在SQLServer中有两个表(T1和T2),需要实现以下目标 假设T1的列是项目ID,单位 T2的列是项目ID,单位 对于T1中单位大于5的每条记录,如果T2中不存在该记录,则将其插入T2并从T1中删除 对于T1中单位大于5的每条记录,如果该记录确实存在于T2中,则在T2中更新该记录并将其从T1中删除 我尝试使用合并,但它不适合我,可能我无法以正确的方式完成 非常感谢您的帮助。首先,您需要对表2进行更新和插入 将表2合并为目标 使用表1作为源 在target.ID=source.ID上 当目

我在SQLServer中有两个表(T1和T2),需要实现以下目标

假设T1的列是项目ID,单位 T2的列是项目ID,单位

对于T1中单位大于5的每条记录,如果T2中不存在该记录,则将其插入T2并从T1中删除

对于T1中单位大于5的每条记录,如果该记录确实存在于T2中,则在T2中更新该记录并将其从T1中删除

我尝试使用合并,但它不适合我,可能我无法以正确的方式完成


非常感谢您的帮助。

首先,您需要对表2进行更新和插入

将表2合并为目标
使用表1作为源
在target.ID=source.ID上
当目标和源不匹配时。单位>5
然后
插入(ID,单位)值(source.ID,source.Units)
匹配和源时。单位>5
然后
更新集合单位=source.Units
输出$action,
inserted.ID与inserted一样,
插入。单位作为插入单位;
然后您需要交换目标表并删除指定的行

将表1合并为目标
使用表2作为源
在target.ID=source.ID上
匹配和源时。单位>5
然后
删除
输出$action,
deleted.ID作为DeletedID,
已删除。单位为删除的单位;

提示:
MERGE
可以执行更新和插入操作。@GordonLinoff,根据我的示例,查询是什么?很抱歉,我是SQL的初学者,以后无法实现。请显示一些示例数据+预期结果,并向我们展示您的尝试,无论它离工作有多近。谢谢,它帮助并解决了问题