2017-06-02 68 views
-1

是否有可能将这2个更新查询合并到1 并且这样做是否具有任何性能优势?结合来自多个表的更新查询

update AREA 
set ID_MasterArea =AREACITY.ID_Area 
from dbo.Area AREA 
JOIN dbo.Address A on AREA.ID_Address = A.ID_Address 
JOIN dbo.Area AREACITY on A.ID_City = AREACITY.ID_City 
where AREA.ID_MasterArea IS NULL 
and AREA.ID_Address IS NOT NULL 

update AREA 
set ID_MasterArea =AREACOUNTRY.ID_Area 
from dbo.Area AREA 
JOIN dbo.City C on AREA.ID_City = c.ID_City 
JOIN dbo.Area AREACOUNTRY on C.ID_Country = AREACOUNTRY.ID_Country 
where AREA.ID_MasterArea IS NULL 
and AREA.ID_City IS NOT NULL 
+0

两个查询是不同的,所以结合更新不会是正确的选择更新前

update AREA set ID_MasterArea = case when Area.ID_Address is not null then AREACOUNTRY.ID_Area when Area.ID_City is not null then AreaCountry.Id_Area end from dbo.Area AREA JOIN dbo.City C on AREA.ID_City = c.ID_City LEFT JOIN dbo.Area AREACOUNTRY on C.ID_Country = AREACOUNTRY.ID_Country LEFT JOIN dbo.Address A On Area.ID_Address = A.ID_Address LEFT JOIN dbo.AREA AREACITY on A.ID_City = AREACITY.ID_City where AREA.ID_MasterArea IS NULL 

检查连接 – TheGameiswar

+0

你为什么要问?这两个查询使用不同的表格,不同的条件和不同的值。如果您想提高性能,请确保表格已编入索引。连接列至少应该由索引覆盖 –

+0

它对我来说看起来非常重复,因为我也必须为省,城市,国家...... –

回答

1

你是这样的吗?做什么记录,你要更新,并做相应的更新,如果好的

+0

是的,这是我想要的!如果它工作:) –