SQL Server:使用三个表进行更新

时间:2015-11-20 11:42:23

标签: sql sql-server join sql-update

在更新脚本方面,我有点偏执和新手。此脚本是否可以在SQL Server 2014中运行?

我在地址表的country_code列中有条目我要更新,这些条目是供应商地址;我只需要更新芬兰的恐怖地点(你会从最后一行看到)。

剧本:

USE %dbname%

UPDATE [address_backup]
SET [address_backup].[country_code] = 'FI'
FROM [dbo].[address_backup]
LEFT JOIN [supplier_table] --Joins the Address table with the Supplier table
     ON [address_backup].[addressid] = [supplier_table].[addressid]

LEFT JOIN [territory] --Join to the area table
     ON [supplier_table].[territoryid] = [territory].[territoryid]
WHERE 
    [supplier_table].[deleted] <> '1' --Not Deleted
    AND [territory].[territoryid] = '1000070' --Finland

我怀疑它不起作用?

1 个答案:

答案 0 :(得分:2)

假设frnachisees_territory是领土是的,它有效; 我只是检查是否需要所有JOIN,因为你在最后一个中使用了borderid然后在WHERE子句中:你能避免最后一次JOIN并使用supplier_table.territoryid作为WHERE吗?

编辑:可能的脚本

USE %dbname%

UPDATE [address_backup]
SET [address_backup].[country_code] = 'FI'
FROM [dbo].[address_backup]
LEFT JOIN [supplier_table] --Joins the Address table with the Supplier table
     ON [address_backup].[addressid] = [supplier_table].[addressid]
WHERE 
    [supplier_table].[deleted] <> '1' --Not Deleted
    AND [supplier_table].[territoryid] = '1000070' --Finland

*我也会按照Juan Carlos Oropeza的建议将LET JOIN与INNER JOIN交换