3

如果用户 ID 存在于表中的用户表中,我尝试更新表中的值(级别)

  IF EXISTS (SELECT userid FROM users)
  UPDATE people SET level='1'

我错过了什么!得到错误?

4

3 回答 3

7

从您的评论“如果两个表中都存在值为 1 的用户 ID,我需要更新级别列”,看来您需要这个:

UPDATE
    `people`
SET
    `level` = 1
WHERE
    EXISTS (
        SELECT
            *
        FROM
            `users`
        WHERE
            users.userid = people.userid
    );
于 2012-09-15T09:23:48.207 回答
3

你不需要做选择。所有你需要的是:

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,但这取决于您使用的是什么数据库。

于 2012-09-15T09:26:23.740 回答
2

使用 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;
于 2017-08-29T10:45:52.753 回答