代码之家  ›  专栏  ›  技术社区  ›  Udders

通过使用不同表的联接和where条件删除行

  •  0
  • Udders  · 技术社区  · 6 年前

    我在mysql数据库中有3个表,我想通过join从其中的2个表中删除,条件是第3个表没有任何与另一个记录相关的id。

    到目前为止,

    DELETE t1, t2
    FROM t1
    INNER JOIN t2 ON t1.qs_id = t2.qst_qs_id
    

    我不能解决的是如何检查t3的记录,使where子句起作用。我想做的事情是这样的,

    从t1和t2中删除,对于没有在t3表t3中保留任何行的任何qs_id,都有一个名为qs a_qs_id的列,因此,如果没有与连接中的id匹配的行,我可以运行删除,但我不知道如何将其放入 WHERE .

    伪的会是,

    从t1、t2中删除所有具有匹配qs_id列的行,但仅当t3没有任何保留qs_id的行时才执行此操作。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Lokesh Balaji    6 年前
    DELETE t1, t2 
    FROM t1
    INNER JOIN t2 ON t1.qs_id = t2.qst_qs_id 
    WHERE t1.qs_id NOT IN (SELECT t3.qs_id FROM t3);