mysql 从同一个表获取数据update自身报错一例

我在mysql中,想将一些记录的某个字段,改成跟某条记录的该字段的值一样,语句如下:

update org_user set password=(select password from org_user where loginname='admin' limit 1) where userid>1000;

结果就报错了,提示:
Error Code: 1093. You can’t specify target table ‘org_user’ for update in FROM clause。看这意思,不能从表中获取数据来更新自己?

果然,如果从别的表拿数据就可以:

--克隆一个表
create table org_user_tmp as select * from org_user;

--从正式表拿数据更新克隆表,OK
update org_user_tmp set password=(select password from org_user where loginname='admin' limit 1) where userid>1000;

这种语句在别的数据库,比如oracle,是没有问题的。来到mysql就不行了。后来改成这样就可以了:

update org_user as u1 
join(select password from org_user where loginname='admin' limit 1) as u2
set u1.PASSWORD=u2.password
where u1.userid>1000;

怪哉。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-05 14:08:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-05 14:08:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-05 14:08:05       87 阅读
  4. Python语言-面向对象

    2024-04-05 14:08:05       96 阅读

热门阅读

  1. 2024/4/4 HarmonyOS学习笔记-UIAbility应用程序入口

    2024-04-05 14:08:05       35 阅读
  2. 《CSS入门到精通》结语

    2024-04-05 14:08:05       32 阅读
  3. 回文素数----函数

    2024-04-05 14:08:05       31 阅读
  4. Qt模拟面试(超硬核)

    2024-04-05 14:08:05       28 阅读
  5. 未来社会:人与机器更深度的交互及其影响

    2024-04-05 14:08:05       38 阅读
  6. 应急响应工具

    2024-04-05 14:08:05       26 阅读
  7. linux三剑客之流编辑器sed

    2024-04-05 14:08:05       36 阅读
  8. 如何通过一个Bash定界符来分割一个字符串

    2024-04-05 14:08:05       35 阅读