如何根据一个表中的特定值从3个表中删除行[重复]
Posted
技术标签:
【中文标题】如何根据一个表中的特定值从3个表中删除行[重复]【英文标题】:How to delete rows from 3 tables based on a specific value in one table [duplicate] 【发布时间】:2014-07-31 19:30:08 【问题描述】:Helo 伙计们,
我有 3 张桌子。 A
,B
,C
.
我在表 A
中有行,其列 'date
' 的值为 '2000-1-1
'。
我喜欢从基于where A.date = '2000-1-1'
的3 个表中删除行。
考虑join on A.ID = B.ID
.. 或表之间的某种其他类型的连接。
【问题讨论】:
级联删除怎么样? 您不能同时从三个表中删除。您需要三个单独的语句。 一个 DML 语句(插入、删除等)只能影响一个表。 问题是关于“怎么做”,他们不需要一个陈述。这可以在一个事务中使用 3 个语句来完成。 如果您想回答您的问题,我们将需要更多信息。您是否在寻找多个语句、一个存储过程、一组触发器? 【参考方案1】:您不能针对 3 个表发出单个删除语句,但您可以在一个事务中针对 3 个不同的表包装 3 个删除语句。
BEGIN TRANSACTION
DELETE FROM TABLE_A
WHERE EXISTS (SELECT 1
FROM Table_X X
WHERE TABLE_A.ID = X.ID)
DELETE FROM TABLE_B
WHERE EXISTS (SELECT 1
FROM Table_X X
WHERE TABLE_B.ID = X.ID)
DELETE FROM TABLE_C
WHERE EXISTS (SELECT 1
FROM Table_X X
WHERE TABLE_C.ID = X.ID)
COMMIT TRANSACTION;
【讨论】:
什么是表 X?第四张桌子?以上是关于如何根据一个表中的特定值从3个表中删除行[重复]的主要内容,如果未能解决你的问题,请参考以下文章