【问题标题】:SQL statement, delete records where 2 fields do not match 2 fields from different tableSQL语句,删除不同表中2个字段不匹配的记录
【发布时间】:2017-11-13 17:30:55
【问题描述】:

这里的 SQL 新手:我有一个名为 work1 的临时表,其中包含以下字段:

公司3,部门。 (以及对问题不适用的其他字段)

我有一个经理关联表“deptmgrassoc”,其中包含以下字段,用于标识经理所在的部门和公司组合:

company3,部门,mgrid。

假设work1有以下记录:

公司3,部门
1、一个
1、b
1、c
2、一个
2、b
2、c

我如何从工作 1 中删除记录,其中 company3 和部门组合不在 Tom 的关联表中的公司和部门组合列表中,而他的记录是:

company3,部门,mgrid
1、a、汤姆
1、b、汤姆
2、a、汤姆
2、b、汤姆

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

【问题讨论】:

    标签: sql delete-row


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多