我有两张如下表:
表Employee1:
Emp Id Name Department
0001 Jack Accounts
0002 Peter Sales
0003 Beck Sales
0004 Nancy Marketing
0005 Parker HR
表Employee2:
Emp Id Name Department
0001 Jack HR
0002 Peter Marketing
0004 Nancy Sales
0005 Parker Accounts
我希望有一个SQL Server脚本将表Employee1更新为:
Emp Id Name Department
0001 Jack HR
0002 Peter Marketing
0003 Beck Sales
0004 Nancy Sales
0005 Parker Accounts
任何指针?
答案 0 :(得分:2)
您可以使用UPDATE
JOIN
UPDATE E1
SET E1.Department = E2.Department
FROM Employee1 E1
INNER JOIN Employee2 E2
ON E1.[Emp Id] = E2.[Emp Id]
答案 1 :(得分:1)
我们可以在这里使用更新联接:
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
答案 2 :(得分:1)
试试这个
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]
答案 3 :(得分:0)
您希望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);