2010-12-02 137 views
0

我在加入时非常虚弱,我需要知道如何使用连接转换以下查询。此查询与子查询工作正常,但我需要将其转换并使用它进行连接。如何在UPDATE查询中使用JOIN

update dbo.TFIN_Stmt_Line_Item_Dtl 
set Stmt_Line_Item_Dtl_Desc='Changes from Baseline' 
where Stmt_Line_Item_Dtl_Desc='Increased Hours' 
and Stmt_Line_Item_Id 
in (select tmt_Line_Item_Ref_Id 
    from dbo.TFIN_Stmt_Line_Item 
    where Stmt_Line_Item_Type_Id = 
     (select Stmt_Line_Item_Type_Id 
     from dbo.TFIN_Stmt_Line_Item_Type 
     where Stmt_Line_Item_Desc like 'ABOX/RBOX Amendment 18 and 20')) 

请如果有任何机构可以帮助我。

谢谢

+0

可你英语你的标题请 – 2010-12-02 09:47:26

回答

3

以下查询使用连接更新您的表,但如果它会更快仍有待观察。

你能发布查询计划,所以我们可以看看那个

update dbo.TFIN_Stmt_Line_Item_Dtl 
set  Stmt_Line_Item_Dtl_Desc = 'Changes from Baseline' 
from dbo.TFIN_Stmt_Line_Item_Dtl dtl 
     inner join dbo.TFIN_Stmt_Line_Item li on li.tmt_Line_Item_Ref_Id = dtl.Stmt_Line_Item_Id 
     inner join dbo.TFIN_Stmt_Line_Item_Type lit on lit.Stmt_Line_Item_Type_Id = li.Stmt_Line_Item_Type_Id 
where dtl.Stmt_Line_Item_Dtl_Desc='Increased Hours' 
     and lit.Stmt_Line_Item_Desc like 'ABOX/RBOX Amendment 18 and 20' 
1
update dbo.TFIN_Stmt_Line_Item_Dtl 
set Stmt_Line_Item_Dtl_Desc='Changes from Baseline' 
where Stmt_Line_Item_Dtl_Desc='Increased Hours' 
and Stmt_Line_Item_Id 
in (select tmt_Line_Item_Ref_Id 
    from dbo.TFIN_Stmt_Line_Item Item 
    JOIN dbo.TFIN_Stmt_Line_Item_Type Type 
    on Type.Stmt_Line_Item_Type_Id = Item.Stmt_Line_Item_Type_Id 
    and Type.Stmt_Line_Item_Desc like 'ABOX/RBOX Amendment 18 and 20') 

update dbo.TFIN_Stmt_Line_Item_Dtl 
set Stmt_Line_Item_Dtl_Desc = 'Changes from Baseline' 
from dbo.TFIN_Stmt_Line_Item_Dtl Detail 
JOIN dbo.TFIN_Stmt_Line_Item Item 
on Item.tmt_Line_Item_Ref_Id = Detail.Stmt_Line_Item_Id 
JOIN dbo.TFIN_Stmt_Line_Item_Type Type 
on Type.Stmt_Line_Item_Type_Id = Item.Stmt_Line_Item_Type_Id 
and Type.Stmt_Line_Item_Desc like 'ABOX/RBOX Amendment 18 and 20') 
where Detail.Stmt_Line_Item_Dtl_Desc = 'Increased Hours'