[英]Update Values in One Table where value of one column is not equal
I have 2 tables like below: 我有2张桌子,如下所示:
Table Employee1: 表Employee1:
Emp Id Name Department
0001 Jack Accounts
0002 Peter Sales
0003 Beck Sales
0004 Nancy Marketing
0005 Parker HR
Table Employee2: 表Employee2:
Emp Id Name Department
0001 Jack HR
0002 Peter Marketing
0004 Nancy Sales
0005 Parker Accounts
I would like to have a SQL Server script that will update the table Employee1 to: 我想要一个将表Employee1更新为的SQL Server脚本:
Emp Id Name Department
0001 Jack HR
0002 Peter Marketing
0003 Beck Sales
0004 Nancy Sales
0005 Parker Accounts
Any pointers? 有指针吗?
You could try UPDATE
with JOIN
您可以尝试使用JOIN
UPDATE
UPDATE E1
SET E1.Department = E2.Department
FROM Employee1 E1
INNER JOIN Employee2 E2
ON E1.[Emp Id] = E2.[Emp Id]
We can use an update join here: 我们可以在这里使用更新联接:
UPDATE a
SET Department = b.Department
FROM Employee1 a
INNER JOIN Employee2 b
ON a.[Emp Id] = b.[Emp Id]
WHERE
a.Department <> b.Department
Try this 尝试这个
Update T1
SET T1 = CASE WHEN T1.Department <> T2.Department
THEN T2.Department
ELSE T1.Department
END
FROM Employee1 T1
INNER JOIN Employee2 T2 ON T1.[Emp Id] = T2.[Emp Id]
You want the MERGE
SQL command to update lines different and insert new ones int he same command: 您希望MERGE
SQL命令更新不同的行并在同一命令中插入新行:
MERGE INTO Employee1 WITH (HOLDLOCK) AS target
USING Employee2 AS source
ON target.[Emp Id] = source.[Emp Id]
WHEN MATCHED THEN
UPDATE SET target.Department = source.Department
WHEN NOT MATCHED BY TARGET THEN
INSERT ([Emp Id], Name, Department)
VALUES (source.[Emp Id], source.Name, source.Department);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.