gpt4 book ai didi

mysql - 在 SQL 中使用 Join 删除操作

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:38 24 4
gpt4 key购买 nike

我有两个表,user 和 ban。用户表有两列idtype。 Ban 表还有两列userIDbannedUserID。我想删除 ban 表中的记录,其中 bannedUserIDtype 为“Admin”。

我想出了这样的查询,但我不确定它是否正确。

DELETE FROM ban WHERE ban.bannedUserID IN(SELECT id FROM user WHERE type = 'Admin')

是否正确?我必须添加/删除任何内容吗?

最佳答案

如果您不确定 DELETE 是否正确,可以通过转换为等效的 SELECT 来测试它:

SELECT b.bannedUserID 
FROM ban b JOIN user u ON b.bannedUserID = u.id
WHERE u.type = 'Admin';

该查询返回的 ID 是您要删除的 ID 吗?

然后在事务中尝试(如果你使用支持事务的存储引擎,即不是MyISAM),这样你就可以在必要时回滚:

START TRANSACTION;

DELETE b
FROM ban b JOIN user u ON b.bannedUserID = u.id
WHERE u.type = 'Admin';

/* do some SELECT to see if the correct rows have been deleted and no others */
/* but if anything appears wrong, and ban is an InnoDB table, you can... */

ROLLBACK;

请注意,我使用的是 MySQL 的多表删除语法。它的工作方式应该与您的子查询方法相同,但在某些情况下它可以更灵活。

关于mysql - 在 SQL 中使用 Join 删除操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6819382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com