使用子查询更新 MySQL

标签 mysql select sql-update subquery

我正在尝试根据表中的另一个值更新表中的特定行,但我似乎不知道如何执行此操作:

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

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

最佳答案

使用 JOIN 语法和非等值连接

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

这里是SQLFiddle 演示

关于使用子查询更新 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18260080/

相关文章:

sql - 更新 SELECT 输出的行的列

php - 获取从当前行到下一行mysql的datetime花费的时间

mysql - SQL Plus 如果同一帐户没有两个不同的结果,如何只显示行

php - 确定变量中的空白实际上是什么

mysql - MySQL 如何按照 IN 函数中给出的 id 顺序返回行?

jquery - 使用 jquery 对多个选择下拉选项进行排序

sql - 插入触发器将无法正常工作

mysql更新语句与过程中的变量

php - 我需要帮助在 mysql php 中使用 LIKE,一直返回 false

mysql返回更新结果