我有以下问题:
我们假设我定义了两个表
用户
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
)。我希望我足够清楚......
有人能够给我提供解决方案吗?提前谢谢。
答案 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
)