Sql 如何从一个表中删除另一个表中存在的项?
我有表A和表B。表B中的项目可能也存在于表A中,我想删除这些项目。执行此操作的SQL语句是什么样子的Sql 如何从一个表中删除另一个表中存在的项?,sql,Sql,我有表A和表B。表B中的项目可能也存在于表A中,我想删除这些项目。执行此操作的SQL语句是什么样子的 delete a --select a.* from tablea a join tableb b on a.someid = b.someid 确保首先运行“选择部件”以确保获得所需的记录。类似于: DELETE FROM TableA as A WHERE A.ID IN (SELECT ID FROM TableB AS B
delete a
--select a.*
from tablea a
join tableb b on a.someid = b.someid
确保首先运行“选择部件”以确保获得所需的记录。类似于:
DELETE
FROM TableA as A
WHERE A.ID IN (SELECT ID
FROM TableB AS B
WHERE [your condition here])
这是一个选择
delete from a
where a.key in (select key from b)
要么:
DELETE a
WHERE a.some_field IN (SELECT some_field FROM b)
或
根据您的数据库,您可能会发现其中一个比另一个工作得更好。IIRC-Oracle倾向于选择WHERE-EXISTS而不是IN,但这取决于许多因素。如果您的表使用InnoDB,最简单的方法是使用表B中的设置表a,并使用on-DELETE-CASCADE。这样就不需要修改代码,而且数据库的完整性也得到了保证。在某些数据库中,从中删除看起来相当奇特的内容是非常有效的
DELETE FROM FIRST_TABLE FT
WHERE EXISTS(
SELECT 1
FROM SECOND_TABLE ST
WHERE ST.PRIMARY_KEY = FT.PRIMARY_KEY
);
delete from foo from foo as f
where exists
(
select 1 from bar as b where b.field = f.field
)
根据标准,这是允许的
delete a from a join b on a.id = b.id;
哪些数据库系统?它做什么?啊,我明白了。这相当于SQL Server上的语法更新。肯定在MSSQL 2K上工作过,我认为2K5-通过谷歌搜索“delete FROM”会产生一些有趣的结果+1。。。以前从未听说过DELETE,但我确实有过可以使用它的案例。现在我知道了!谢谢。这取决于您的数据库服务器平台。你在用什么?Mysql?SQL Server?+1谢谢,这一个解决了我今天遇到的类似问题。
delete a from a join b on a.id = b.id;