如果在另一个表中找不到,则在表中插入行

mrb*_*lah 4 sql-server

我有一张桌子:

Employee (employeeID)
EmployeeRank (rankID, employeeID)
Run Code Online (Sandbox Code Playgroud)

现在我有另一张桌子,所有员工都会加薪.

DueForRaise (rankID, employeeID)
Run Code Online (Sandbox Code Playgroud)

我必须将DUeForRaise中的所有员工插入到EmployeeRank表中,如果他们还没有相同的等级.

我正在为粒子rankID @rankID做这个更新.

这会有用吗?

INSERT EmployeeRank ( rankID, employeeID)
SELECT rankID, employeeID
FROM DueForRaise dfr
      OUTER JOIN EmployeeRank er er.employeeid = dfr.employeeid)
WHERE dfr.rankID = @rankID
Run Code Online (Sandbox Code Playgroud)

Nes*_*tor 13

怎么样:

insert into EmployeeRank
select * from DueForRaise p
where NOT EXISTS(
    SELECT * FROM EmployeeRank WHERE rankID=p.rankID and employeeID=p.employeeID
);
Run Code Online (Sandbox Code Playgroud)