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;

怪哉。

相关推荐
码上飞扬33 分钟前
深入解析MySQL联合查询(UNION):案例与实战技巧
数据库·mysql
xx155802862xx4 小时前
在CentOS 7上仅安装部署MySQL 8.0客户端
mysql·adb·centos
_extraordinary_4 小时前
MySQL 事务(一)
数据库·mysql
计算机学姐5 小时前
基于SpringBoot的小区停车位管理系统
java·vue.js·spring boot·后端·mysql·spring·maven
luo_guibin6 小时前
DVWA在线靶场-SQL注入部分
数据库·sql·mysql
码熔burning7 小时前
MySQL 分页查询优化
数据库·mysql
PgSheep8 小时前
一文通俗讲解MySQL数据库常见面试题-持续更新
java·数据库·mysql·面试
2501_911121238 小时前
【无标题】
数据库·sql·mysql
Blue.ztl10 小时前
菜鸟之路day31一一MySQL之多表设计
android·数据库·mysql
篱笆院的狗19 小时前
MySQL 中如何进行 SQL 调优?
java·sql·mysql