如何在连接两个表的同时更新 SQL Server 表列?

5
我正在尝试在将其连接到另一个表时更新列。我使用了以下查询,但它给了我错误。
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 

有人可以帮忙吗?关于IT技术方面的问题。

谢谢。


请尝试仅使用左连接或右连接,而不是内连接。 - Addicted
是 Oracle、MySQL 还是 SQL Server? - codingbiz
1
我正在使用SQL Server。我尝试过使用内连接和左连接,但都没有成功。@M_M已经解决了这个问题。请查看下面的答案。 - vamps
3个回答

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]);

0

从 TABLE_1、Table2 中,当 TABLE_2.ID = TABLE_1.ID 且 TABLE_2.DEPT = 'HR' 且 TABLE_1.COMPANY = 1 时,更新 TABLE_2 SET DEPT='人力资源'

因为在联接中更新表时,需要在 FROM 子句中使用两个表


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接