使用子查询更新 MySQL

问题描述 投票:0回答:2

我正在尝试根据表中的另一个值更新表中的特定行,但我似乎不知道该怎么做:

UPDATE users AS a SET a.val = (SELECT value FROM users WHERE userid = 4) WHERE a.userID = 1

但我收到错误

Lookup Error - MySQL Database Error: You can't specify target table 'a' for update in FROM clause

我在这里缺少什么想法吗?

mysql select sql-update subquery
2个回答
1
投票

使用

JOIN
语法和非等值连接

UPDATE users a JOIN users b
    ON a.userID = 1
   AND b.userid = 4
   SET a.value = b.value

这里是SQLFiddle演示


0
投票

使用连接和子查询,

update users as a
join (select value  
      from users 
      where userid=4) as sub
set a.val=sub.val
where a.userID=1;

子查询将从 userid=4 的 users 表中检索值,然后将此子查询与 userID=1 的 users 表连接并更新 val 列。

© www.soinside.com 2019 - 2024. All rights reserved.