通过联接和使用其他表的WHERE条件删除行

时间:2018-11-06 11:34:37

标签: mysql join sql-delete

我在mysql数据库中有3个表,我想根据第3个表没有与其他记录相关的ID来通过JOIN从其中2个表中删除。

到目前为止,我已经拥有

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

我无法解决的是如何检查t3的记录以使where子句起作用。我尝试进行工作的场景如下,

从t1和t2删除,对于t3表t3中没有剩余任何行的任何qs_id,有一个名为qsa_qs_id的列,因此,如果没有与JOIN中的ID匹配的行,我可以运行删除操作,但是我无法弄清楚如何将其放入我的WHERE

PSEUDO应该是

从t1,t2删除,所有具有匹配qs_id列的行都只有在t3没有剩余qs_id的行时才这样做。

1 个答案:

答案 0 :(得分:1)

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);