SQL语句,删除2个字段与不同表中的2个字段不匹配的记录

时间:2017-11-13 17:30:56

标签: sql delete-row

SQL newbie here:我有一个名为work1的临时表,其中包含以下字段:

company3,dept。 (以及其他不属于问题的字段)

我有一个经理人关联表'deptmgrassoc',其中包含以下字段,用于标识部门和部门的组合。公司经理结束了:

company3,dept,mgrid。

假设work1有以下记录:

company3,dept
1,a 1,b
1,c
2,a 2,b
2,c

如何从work3中删除公司3&部门组合不在公司和公司名单中。汤姆关联表中的部门组合,他的记录是:

company3,dept,mgrid
1,a,tom
1,b,tom
2,a,tom
2,b,tom

sql应该删除带有1,c&的记录。 2,c因为这些组合不在关联表中。

1 个答案:

答案 0 :(得分:1)

not exists运算符应该可以解决问题:

DELETE FROM work1 w
WHERE  NOT EXISTS (SELECT *
                   FROM   deptmgrassoc d
                   WHERE  w.company3 = d.company3 AND
                          w.dept = d.dept)