如何在连接两个表时更新Sql Server表列?

vam*_*mps 5 sql-server join

我正在尝试在将列加入另一个表时更新列.我使用了以下查询,但它给了我错误.

UPDATE  TABLE_2 
INNER JOIN
      TABLE_1
ON     (T2.ID=T1.ID)
SET      TABLE_2.DEPT='HUMAN RESOURCE'
WHERE    TABLE_2.DEPT='HR'
AND T1.COMPANY =1 
Run Code Online (Sandbox Code Playgroud)

谁可以帮我这个事?

谢谢.

Cod*_*ian 3

一方面,您使用的表别名未在任何地方定义(T2T1),这可能很好地解决您的问题。如果不是,正确的语法很大程度上取决于 SQL 风格。

例如,在 SQL Server 中,语法为

UPDATE T2
SET T2.dept = 'HUMAN RESOURCE'
FROM Table2 T2
   INNER JOIN Table1 T1
        ON T1.[ID] = T2.[ID]
Run Code Online (Sandbox Code Playgroud)

虽然您甚至不需要真正加入这里,但您只是想

UPDATE Table2 T2
SET T2.dept = 'HUMAN RESOURCE'
WHERE EXISTS(SELECT * FROM  Table1 T1
        ON T1.[ID] = T2.[ID])
Run Code Online (Sandbox Code Playgroud)

在 MySQL 中,语法是

UPDATE FROM TABLE2 AS T2 
    INNER JOIN TABLE1 as T1 
        ON T2.id = T1.id 
SET T2.Dept = 'Human Resources' 
Run Code Online (Sandbox Code Playgroud)

当然,该WHERE EXISTS方法也适用于MySQL

UPDATE FROM Table2 AS T2
   SET Dept="Human Resources" 
   WHERE EXISTS (SELECT * FROM  Table1 T1
            ON T1.[ID] = T2.[ID]);
Run Code Online (Sandbox Code Playgroud)