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;

怪哉。

相关推荐
小白爱运维22 分钟前
MySQL升级8.0.44后登录报错-系统表不支持'MyISAM'存储引擎
数据库·mysql
北海屿鹿1 小时前
【MySQL】内置函数
android·数据库·mysql
xixingzhe26 小时前
MySQL CDC实现方案
数据库·mysql
云游云记6 小时前
php 防伪溯源项目:防伪码生成与批量写入实践
mysql·php·唯一字符串
爪哇天下7 小时前
Mysql实现经纬度距离的排序(粗略的城市排序)
数据库·mysql
独自破碎E7 小时前
MySQL中有哪些日志类型?
数据库·mysql
小唐同学爱学习7 小时前
短链接修改之写锁
spring boot·redis·后端·mysql
luoluoal8 小时前
基于python的web渗透测试工具(源码+文档)
python·mysql·django·毕业设计·源码
袁煦丞 cpolar内网穿透实验室10 小时前
mysql_exporter+cpolar远程监控 MySQL 不卡壳!cpolar 内网穿透实验室第 712 个成功挑战
服务器·数据库·mysql·远程工作·内网穿透·cpolar
Mikhail_G10 小时前
Mysql数据库操作指南(零基础篇二)
大数据·数据库·sql·mysql·数据分析