SQL 删除并加入 2 个?

SQL DELETE with 2 Joins?

我必须删除一个 table,其中禁用了用户。问题是,我最后必须使用 where 子句。这是最重要的一点,否则我无法测试我的查询。

where 子句很重要,因为没有它我会删除整个数据库,而不仅仅是禁用的用户。

DELETE a
   FROM CONTENT_PERM a
   JOIN user_mapping b
     ON a.USERNAME = b.USER_KEY
        (JOIN CWD_USER c
           ON b.USERNAME = c.USER_NAME)
  WHERE c.ACTIVE = 'F';

如果我没理解错的话,你不需要在 JOIN

中间插入 ()
DELETE a
FROM CONTENT_PERM a
JOIN user_mapping b
ON a.USERNAME = b.USER_KEY
JOIN CWD_USER c
ON b.USERNAME = c.USER_NAME
WHERE c.ACTIVE = 'F';

只需使用 Select 查询,只需删除删除并检查您是否得到正确的结果,然后根据结果您可以采取措施删除查询。 像下面这样。

Select a
FROM CONTENT_PERM a
JOIN user_mapping b
ON a.USERNAME = b.USER_KEY
JOIN CWD_USER c
ON b.USERNAME = c.USER_NAME
WHERE c.ACTIVE = 'F';

你可以试试下面

DELETE FROM CONTENT_PERM
WHERE USERNAME IN (SELECT USER_KEY FROM user_mapping WHERE USERNAME IN (SELECT USER_NAME
from CWD_USER where ACTIVE = 'F'));