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;

怪哉。

相关推荐
mldlds24 分钟前
MySQL加减间隔时间函数DATE_ADD和DATE_SUB的详解
android·数据库·mysql
chehaoman4 小时前
MySQL的索引
android·数据库·mysql
rrrjqy5 小时前
用 Docker 部署远程 MySQL:从端口踩坑到权限全开(附避坑指南)
mysql·adb·docker
ahauedu7 小时前
MySQL 8.0+ 默认使用 caching_sha2_password 插件进行密码加密
数据库·mysql
_evenif8 小时前
MySql 8 一机多实例部署
linux·数据库·mysql
shaoming377610 小时前
MySQL篇之对MySQL进行参数优化,提高MySQL性能
数据库·mysql
程序员夏末10 小时前
【MySQL | 第一篇】 深入理解三大日志(undo Redo Bin)
数据库·mysql
ruxingli11 小时前
MySQL优化
数据库·mysql
feng68_11 小时前
MySQL集群主从复制
linux·运维·数据库·mysql·adb
Xzq21050912 小时前
Mysql API学习
数据库·学习·mysql