簡體   English   中英

來自同一表的SQL更新父ID

[英]SQL Update Parent ID from Same table

是否可以使用Update From查詢更新自引用父ID。

我有桌子

加速器

AccID    Name  ParentAccID  AccNumber
01       A       Null        A001
02       B       Null        A002   
03       C       Null        A003
04       D       Null        A004
05       E       Null        A005

AccRef

AccNumber       MasterAcc    Name
A001             A001         A
A002                          B 
A003             A002         C
A004             A005         D 
A005             A009         E

它的加入方式是使用AccNumber,然后需要根據該Acc的MasterAcc在ParentAccID中更新AccID。 僅適用於現有的AccNumber,並且AccNumber和MasterAcc不相同(對不起,如果混淆不清)

結果表應如下所示

加速器

AccID    Name  ParentAccID  AccNumber
01       A       Null        A001
02       B       Null        A002   
03       C       02          A003
04       D       05          A004
05       E       Null        A005

謝謝

嘗試這個,

DECLARE @Acc Table (AccID varchar(10),Name  varchar(200),ParentAccID  varchar(200), AccNumber varchar(200))
Insert into @Acc Values 
('01','A',Null,'A001'),
('02','B',Null,'A002'),   
('03','C',Null,'A003'),
('04','D',Null,'A004'),
('05','E',Null,'A005')

DECLARE @AccRef Table (AccNumber varchar(10),MasterAcc varchar(200),Name  varchar(200))
Insert into @AccRef Values 
('A001','A001','A'),
('A002',Null,'B'), 
('A003','A002','C'),
('A004','A005','D'), 
('A005','A009','E')

Update A set ParentAccID = M.AccID From @Acc A
Inner Join @AccRef R on R.AccNumber = A.AccNumber and R.AccNumber <> R.MasterAcc
Inner Join @Acc M on M.AccNumber = R.MasterAcc 

希望這是您想要的。

最后,

Select * from @Acc

輸出量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM