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

时间:2012-05-31 04:14:50

标签: 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 

有人可以帮我吗?

感谢。

3 个答案:

答案 0 :(得分:3)

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

例如,在SQL Server中,语法是

UPDATE T2
SET T2.dept = 'HUMAN RESOURCE'
FROM Table2 T2
   INNER JOIN Table1 T1
        ON T1.[ID] = T2.[ID]

虽然你真的不想在这里加入,但你只想要

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

在MySQL中,语法是

UPDATE FROM TABLE2 AS T2 
    INNER JOIN TABLE1 as T1 
        ON T2.id = T1.id 
SET T2.Dept = 'Human Resources' 

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

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

答案 1 :(得分:0)

如果是MSSQL,那么查询应该是

UPDATE TABLE_2 SET DEPT='Human Resource'
FROM TABLE_1
WHERE TABLE_2.ID = TABLE_1.ID
AND TABLE_2.DEPT = 'HR'
AND TABLE_1.COMPANY = 1

答案 2 :(得分:0)

UPDATE TABLE_2 SET DEPT='Human Resource' FROM TABLE_1,Table2 WHERE TABLE_2.ID = TABLE_1.ID AND TABLE_2.DEPT = 'HR' AND TABLE_1.COMPANY = 1

因为当我们在加入时更新表时,我们使用close表中的两个表