【发布时间】:2014-07-22 18:33:33
【问题描述】:
使用 SQL Server 2008 R2:我有一个名为 Data 的表。我想删除活动 A 和活动 B 都发生在同一帐户的同一日期范围内的所有行(如下面由字段“键”表示),因为它们一起构成“清洗”。
如果我编码:
Delete Data D1
from Data1
inner join Data D2
on D1.key = D2.key
and D1.Activity = 'A'
and D2.Activity = 'B'
and D1.TranDate < EndDateRange
and D1.TranDate >= BeginDateRange
and D2.TranDate < EndDateRange
and D2.TranDate >= BeginDateRange
我可以从表中删除具有活动“A”的行。我怎样才能删除活动“B”?我可以在同一个查询中执行此操作吗?删除 A 行后,帐户将不再显示清洗条件。
【问题讨论】:
-
要么在结构本身的表之间强制级联删除。或者,您必须有一个过程根据从查询中获得的数据集执行单个删除。您希望在事务中这样做,以便在您提交之前都成功;否则您将失去识别重复内容的能力。或者,如果您有备用字段,您可以更新两个表中的字段,然后从已设置该字段标志的表中删除。或者您可以创建一个带有临时表保存结果的过程,然后根据临时表中的内容从两者中删除...
-
xQBert,感谢您的回复。你能详细说明吗?什么是级联删除?
-
通过下面的链接查看答案。
标签: tsql sql-server-2008-r2 self-join delete-row