2015-09-11 96 views
-2

我有两个几乎相同的表。 需要更新TABLE_03每Postal时,它的NULL 有没有ID或主键使用,因此我与NameLink,并PhoneNum /(在TABLE_ALL PhoneSQL-Server 2014.更新连接两个表和使用表别名

试过SQL连接这些:

UPDATE TABLE_03 a 
    join TABLE_ALL b 
    ON a.Link = b.Link, 
     a.Name = b.Name, 
     a.PhoneNum = b.Phone 
    SET a.Postal = b.PostalCode 
    WHERE a.Postal IS NULL; 

SQL Server为错误

Incorrect syntax near 'a'. 

没有别名:

UPDATE TABLE_03 
    join TABLE_ALL 
    ON TABLE_03.Link = TABLE_ALL.Link, 
     TABLE_03.Name = TABLE_ALL.Name, 
     TABLE_03.PhoneNum = TABLE_ALL.Phone 
    SET TABLE_03.Postal = TABLE_ALL.PostalCode 
    WHERE TABLE_03.Postal IS NULL; 

给出错误:

Incorrect syntax near the keyword 'join'. 
+0

请检查该 http://stackoverflow.com/questions/ 2044467/how-to-update-two-tables-in-one-statement-in-sql-server-2005 – iwan

+1

[Update with two tables?]可能出现重复? (http://stackoverflow.com/questions/1068447/update-with-two-tables) –

回答

3

你的语法是错误的,主要是JOIN ON条款。它应该像下面使用AND操作

UPDATE TABLE_03 a 
    join TABLE_ALL b 
    ON a.Link = b.Link AND 
     a.Name = b.Name AND 
     a.PhoneNum = b.Phone 
    SET a.Postal = b.PostalCode 
    WHERE a.Postal IS NULL; 

通过适当SQL Server语法

UPDATE a 
SET a.Postal = b.PostalCode 
FROM TABLE_03 a 
    join TABLE_ALL b 
    ON a.Link = b.Link AND 
     a.Name = b.Name AND 
     a.PhoneNum = b.Phone 
    WHERE a.Postal IS NULL; 
0

试试这个

 UPDATE TABLE_03 
SET TABLE_03.Postal = TABLE_ALL.PostalCode 
from TABLE_ALL 
where TABLE_03.Link = TABLE_ALL.Link AND 
    TABLE_03.Name = TABLE_ALL.NAME AND 
    TABLE_03.PhoneNum = TABLE_ALL.Phone and 

    TABLE_03.Postal IS NULL; 
0

试试这个:

UPDATE a 
    SET a.Postal = b.PostalCode 
    FROM TABLE_03 a 
    join TABLE_ALL b 
    ON a.Link = b.Link, 
     a.Name = b.Name, 
     a.PhoneNum = b.Phone 
    WHERE a.Postal IS NULL;