如果用户表中存在userid,我会尝试更新表人员中的值(级别) 在表格中
IF EXISTS (SELECT userid FROM users)
UPDATE people SET level='1'
我错过了什么!得到错误?
答案 0 :(得分:6)
从您的评论“我需要更新级别列,如果两个表中的用户ID都存在值1”,您似乎需要这样:
update people set level=1 where exists (
select * from users where users.userid=people.userid
);
答案 1 :(得分:2)
您无需进行选择。您所需要的只是:
UPDATE people SET level='1' WHERE userid IS NOT NULL
BTW,你在运行什么数据库?
UPD。抱歉,我错过了你有两张桌子的事实。我建议你做一些类似的事情:
UPDATE people SET level='1' WHERE EXISTS (SELECT * FROM users WHERE
users.userid = people.userid)
此外,UPDATE
可以使用JOIN
完成,但这取决于您使用的数据库。
答案 2 :(得分:0)
使用MySQL,“UPDATE”上的“EXISTS”条款根本不起作用。
改为使用JOIN condiction:
UPDATE people A, (SELECT userid FROM users) B SET A.level='1'
但是,我想你也应该使用一些WHERE子句......;)
例如,只有在“用户”表中存在连接值时,才会更新“人员”表中的“级别”...
UPDATE people A, users B SET A.level='1' WHERE A.userid=B.userid;