如果用户 ID 存在于表中的用户表中,我尝试更新表中的值(级别)
IF EXISTS (SELECT userid FROM users)
UPDATE people SET level='1'
我错过了什么!得到错误?
从您的评论“如果两个表中都存在值为 1 的用户 ID,我需要更新级别列”,看来您需要这个:
UPDATE
`people`
SET
`level` = 1
WHERE
EXISTS (
SELECT
*
FROM
`users`
WHERE
users.userid = people.userid
);
你不需要做选择。所有你需要的是:
UPDATE people SET level='1' WHERE userid IS NOT NULL
顺便说一句,你在运行什么数据库?
UPD。抱歉,我错过了您有两张桌子的事实。我可以建议执行以下操作:
UPDATE people SET level='1' WHERE EXISTS (SELECT * FROM users WHERE
users.userid = people.userid)
此外,UPDATE
可以使用 来完成JOIN
,但这取决于您使用的是什么数据库。
使用 MySQL,“UPDATE”上的“EXISTS”子句根本不起作用。
改用 JOIN 条件:
UPDATE people A, (SELECT userid FROM users) B SET A.level='1'
但是,我想你也应该使用一些 WHERE 子句...... ;)
例如,只有在“users”表上存在连接值时,才会更新“people”表上的“level”...
UPDATE people A, users B SET A.level='1' WHERE A.userid=B.userid;