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

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

sql 复制代码
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。看这意思,不能从表中获取数据来更新自己?

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

sql 复制代码
--克隆一个表
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就不行了。后来改成这样就可以了:

sql 复制代码
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;

怪哉。

相关推荐
花花无缺2 小时前
MySQL 的存储引擎-InnoDB 和 MyISAM的对比
mysql
苏琢玉2 小时前
如何让同事自己查数据?写一个零依赖 PHP SQL 查询工具就够了
mysql·php
代码的余温3 小时前
MySQL性能优化:10个关键参数调整指南
数据库·mysql·性能优化
花花无缺4 小时前
mysql常用的基本函数
mysql
柏油5 小时前
可视化 MySQL binlog 监听方案
数据库·后端·mysql
柏油7 小时前
MySQL 字符集 utf8 与 utf8mb4
数据库·后端·mysql
我科绝伦(Huanhuan Zhou)7 小时前
异构数据库兼容力测评:KingbaseES 与 MySQL 的语法・功能・性能全场景验证解析
数据库·mysql
BTU_YC7 小时前
docker compose部署mysql
mysql·adb·docker
麦麦大数据9 小时前
F004 新闻可视化系统爬虫更新数据+ flask + mysql架构
爬虫·mysql·flask·可视化·新闻
白鹭18 小时前
MySQL(多表查询练习)
数据库·mysql