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;

怪哉。

相关推荐
逃逸线LOF1 小时前
SpringMVC拦截器 & 异常处理机制
数据库·mysql
清晨0012 小时前
国产化数据库替代方案:openGauss 详解与 MySQL 平滑迁移实战
数据库·mysql
夜雪一千5 小时前
MySQL如何限制账号权限,最小权限原则实践
数据库·mysql
2601_962056235 小时前
EasyMarkets易信:比特币基金流入创年内新高
人工智能·mysql
拾光Ծ6 小时前
【MySQL】复合查询、表的连接
java·数据库·sql·mysql
吃饱了得干活6 小时前
MySQL 进阶:锁与事务、执行计划、内存管理、高可用架构及 8.0 新特性
后端·mysql
Knight_AL6 小时前
MySQL 递归 CTE:WITH RECURSIVE 用法详解
android·数据库·mysql
数据狐(Datafox)6 小时前
mercadolibre.item_get 工程实战:美客多商品详情API技术解析与落地应用
java·人工智能·mysql·json
行云&流水7 小时前
自动备份mysql数据库
数据库·mysql