SQL Update一个表比较两个表的信息

时间:2011-03-29 19:23:28

标签: sql sql-update derby

我有以下问题:

我们假设我定义了两个表

用户

ID (int. key)  
NAME (String)  
SALARY (currency)   

USERSADD

ID (int. key)  
TYPE (String)

第二个表存储了USERS的附加信息。显然,真正的表格更复杂,但这是个主意。 (不要问我为什么要创建另一个表而不是在第一个表中添加字段,这是我老板的想法。)

现在我正在尝试更新第一个表,如果满足第二个表的条件 像这样:

UPDATE USERS U, USERSADD A  
SET U.SALARY = 1000  
WHERE U.ID = A.ID  
AND A.TYPE = 'Manager'

在Netbeans Derby中,我有一个错误:“,在第X列中找到”,它引用了两个表之间的逗号(UPDATE USERS U, USERSADD A)。我希望我足够清楚......

有人能够给我提供解决方案吗?提前谢谢。

4 个答案:

答案 0 :(得分:4)

UPDATE USERS
SET SALARY = 1000
WHERE ID IN (
SELECT ID FROM USERSADD 
WHERE TYPE = 'Manager')

答案 1 :(得分:2)

UPDATE USERS 
       SET USERS.SALARY = 1000  
  FROM USERS JOIN USERSADD ON USERS.ID = USERSADD.ID 
 WHERE USERSADD.TYPE ='MANAGER'

答案 2 :(得分:1)

您使用的语法使用隐式INNER JOIN。你最好使用显式连接。尝试这样的事情:

UPDATE Users
SET Salary = 1000
FROM Users u
INNER JOIN Usersadd a on u.id=a.id
    AND a.Type = 'Manager

答案 3 :(得分:0)

UPDATE USERSU
SET SALARY = 1000
WHERE exist IN (
        SELECT ID
        FROM USERSADD A
        WHERE TYPE = 'Manager'
            AND U.id = A.id
    )