1

我正在尝试匹配源数据库表和目标数据库表中的表中的行。我能够删除存在于 dest 表中但不存在于源表中的行。但是,我还需要在 dest db 内的其他表中删除它的依赖行。有没有办法可以在合并中实现这一点。

合并语句如下所示。

MERGE Table1 as [Target]

using (select  A,B,C,D,E,
F,G,H,I,J,K,L
from Source.dbo.Table1 as al
where al.H is null) AS [Source]

ON ([Target].A = [Source].B)

WHEN NOT MATCHED By TARGET THEN
    INSERT(C,D,E,F,G)
    VALUES([Source].C,[Source].D,[Source].E,[Source].F,[Source].G);
WHEN NOT MATCHED BY SOURCE THEN
    DELETE;

见下图。

 Source
DB0.dbo.Table1

ID  IDID    NAME
1   6   xyz
2   3   yzx
3   4   abc
4   5   lym
5   1   tes


Dest
 Table1
ID  IDID    Name
1   6   xyz
2   3   yzx
3   4   abc
4   5   lym
5   1   tes
6   2   ads

Dependent Table
 DB1.Dbo,Table2
IDID    VALUE
1   BST
2   PL
3   NO
4   SS
5   DR
6   CR
7   LM

提前致谢。

4

1 回答 1

2

正如 Nenad Zivkovic 建议的那样,使用级联删除。

以下是一些相关链接,它们提供了一些潜在的答案:

如何使用合并命令从源中删除

使用单个 sql 查询从多个表中删除行

于 2013-05-22T09:22:39.267 回答