mysql - 在主 UPDATE 语句的子查询中指定相同的表

标签 mysql

底部的第二个查询出现以下错误。知道为什么吗?

谢谢

错误: 错误号:1093

You can't specify target table 'menus' for update in FROM clause

作品:

INSERT INTO menus
(name, controller, parent)
VALUES
('A', 'B', (SELECT id FROM menus menus_alias WHERE SHA1(menus_alias.id) = '1'))

两者都不起作用:

UPDATE menus SET
parent = (SELECT id FROM menus menus_alias WHERE SHA1(menus_alias.id) = '1')
WHERE SHA1(id) = '5'

UPDATE menus menus_alias SET
menus_alias.parent = (SELECT id FROM menus WHERE SHA1(id) = '1')
WHERE SHA1(menus_alias.id) = '5'

检查了这些:

还有一些

最佳答案

使用JOIN

UPDATE menus m1 JOIN menus m2
    ON SHA1(m1.id) = '5' AND SHA1(m2.id) = '1'
   SET m1.parent = m2.id

关于mysql - 在主 UPDATE 语句的子查询中指定相同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16983087/

相关文章:

mysql - 'where clause' 中的未知列 - 在 WHERE 中使用 ALL 运算符时

MySQL 程序游标无法正常运行

php - Ajax settimeout从php/mysql读取状态

php - 将大型 json 字符串存储到数据库 + 哈希

mysql - 如何编写查询以接受搜索框的输入并从 MySql db (Wordpress) 进行搜索

mysql - 我可以巧妙地跳过全部或部分 mySQL 脚本(尤其是包含创建存储过程的脚本)吗?

php - 引号和参数化 SQL 查询的问题

仅 mysqldump 模式,模式更新而不删除

mysql - mysql 中的触发器需要更正

php - 从php中的逗号分隔字符串中删除特定关键字