Sql server 如果在表b中找不到记录,则对表A进行SQL Server更新
具有下表: 表名Sql server 如果在表b中找不到记录,则对表A进行SQL Server更新,sql-server,Sql Server,具有下表: 表名计划 字段名 Key EMP _ID Key PLAN_NUMBER STATUS FIELD1 FIELD2 FIELD3 FIELD4 表名PLANS\u TEMP Key EMP_ID Key PLAN_NUMBER STATUS FIELD1 FIELD2 FIELD3 FIELD4 希望在计划表中有计划的数据 如果计划中不存在记录,则不希望删除记录,而是希望将状态设置为“I” Key EMP_ID Key PLAN_NUMBER STATUS FIELD
计划
字段名
Key EMP _ID
Key PLAN_NUMBER
STATUS
FIELD1
FIELD2
FIELD3
FIELD4
表名PLANS\u TEMP
Key EMP_ID
Key PLAN_NUMBER
STATUS
FIELD1
FIELD2
FIELD3
FIELD4
希望在计划
表中有计划的数据
如果计划中不存在记录,则不希望删除记录,而是希望将状态设置为“I”
Key EMP_ID
Key PLAN_NUMBER
STATUS
FIELD1
FIELD2
FIELD3
FIELD4
如果Office\u Plan\u temp中不存在记录,则希望更新Office\u Plan.Status='I'
大致如下:
Update P
Set status = ‘I’
Where emp_id and plan_number not exists in Plans_Temp table
(我们必须匹配位置号和平面号)
如果在Plans_Temp表中找到记录,但在Plans表中找不到,则要插入
对于所有现有记录,希望检查字段1、字段2、字段3和字段4中是否有任何更改,然后更新
任何帮助都将不胜感激。类似的内容可能会对您有所帮助:
MERGE PLANS as target
USING PLANS_TEMP as source
ON target.EMP_ID = source.EMP_ID AND target.PLAN_NUMBER = source.PLAN_NUMBER
--If record doesn’t exists in Office_Plan_temp Wants to update Office_Plan.Status = ‘I’
WHEN NOT MATCHED BY SOURCE THEN
UPDATE SET [STATUS] = 'I'
--If Record found in Plans_Temp table but not in Plans table, wants to insert.
WHEN NOT MATCHED BY TARGET THEN
INSERT (EMP_ID, PLAN_NUMBER, [STATUS], FIELD1, FIELD2, FIELD3, FIELD4)
VALUES (source.EMP_ID, source.PLAN_NUMBER, source.[STATUS], source.FIELD1, source.FIELD2, source.FIELD3, source.FIELD4)
--For all the existing records, (! HERE UPDATE WITHOUT ANY CHECKING wants to check if there’s any change in) field1, field2, field3 and field4 then update.
WHEN MATCHED THEN
UPDATE SET target.FIELD1 = source.FIELD1,
target.FIELD2 = source.FIELD2,
target.FIELD3 = source.FIELD2,
target.FIELD4 = source.FIELD4;
我想在这种情况下你需要合并。更多信息请点击这里