我有一个查询。
DELETE FROM A
WHERE i NOT IN
( SELECT i FROM B WHERE j = 1
UNION select i from C
UNION select i from D
);
基本上删除表 B、C 或 D 中未出现字段的 A 中的所有行i
。如果只是:
DELETE FROM A
WHERE i NOT IN
( SELECT i FROM B
);
然后可以通过左连接轻松完成
DELETE A FROM A
LEFT JOIN B
ON A.i = B.i
WHERE B.id is NULL;
(假设每个表在模式中都有一个 id 字段)
我想我的问题是,以上是否通过以下解决方案扩展到三表场景?
DELETE A FROM A
LEFT JOIN B
ON A.i = B.i AND B.j = 1
LEFT JOIN C
ON A.i = C.i
LEFT JOIN D
ON A.i = D.i
WHERE B.id is NULL
AND C.id is NULL
AND D.id is NULL