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;

怪哉。

相关推荐
梵法利亚41 分钟前
Ubuntu-docker安装mysql
mysql·ubuntu·docker
程序员爱钓鱼2 小时前
Go 语言高效连接 MySQL 数据库:从入门到实战
后端·mysql·go
白熊一号2 小时前
Hi, DeepSeek 带我通过实战学习SQL入门知识
sql·mysql
Linux运维老纪4 小时前
Python实战项目(‌Hands-on Python Project)
开发语言·数据库·python·sql·mysql·云计算·运维开发
小林熬夜学编程4 小时前
【MySQL】第十五弹---全面解析事务:定义、起源、版本支持与提交方式
android·linux·服务器·开发语言·数据库·mysql
计算机学姐6 小时前
基于Asp.net的驾校管理系统
vue.js·后端·mysql·sqlserver·c#·asp.net·.netcore
马剑威(威哥爱编程)6 小时前
C语言操作MySQL从入门到精通
c语言·mysql·adb
明矾java11 小时前
MySQL进阶-关联查询优化
数据库·mysql
冰糖码奇朵11 小时前
大数据表高效导入导出解决方案,mysql数据库LOAD DATA命令和INTO OUTFILE命令详解
java·数据库·sql·mysql