Как использовать JOIN в запросе UPDATE - PullRequest
0 голосов
/ 02 декабря 2010

Я очень слаб в соединении, и мне нужно знать, как я могу преобразовать следующий запрос, используя соединения. Этот запрос хорошо работает с подзапросами, но мне нужно преобразовать его и использовать для создания соединений.

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'))

Пожалуйста, если мне поможет какое-нибудь тело.

Спасибо

Ответы [ 2 ]

3 голосов
/ 02 декабря 2010

Следующий запрос использует объединения для обновления таблицы, но если это будет быстрее, еще неизвестно.

Не могли бы вы опубликовать план запроса, чтобы мы могли взглянуть на это

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 голос
/ 02 декабря 2010
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' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...