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;

怪哉。

相关推荐
@小柯555m3 分钟前
MySql(基础操作符--查找除复旦大学的用户信息)
数据库·sql·mysql
java1234_小锋33 分钟前
MySQL索引设计有哪些原则?
数据库·mysql
添砖java‘’1 小时前
MYSQL操作库
数据库·mysql
有浔则灵2 小时前
GORM 关联关系完全指南:从入门到精通
mysql·gorm
草莓熊Lotso3 小时前
Linux C++ 高并发编程:从原理到手撕,线程池全链路深度解析
linux·运维·服务器·开发语言·数据库·c++·mysql
大龄码农-涵哥3 小时前
MySQL SQL调优详解:explain执行计划、索引失效、慢查询优化一条龙
数据库·sql·mysql
阿丰资源3 小时前
基于SpringBoot+MySQL+Maven+Vue的旅游网站的设计与实现(源码+数据库+文档一键运行)
数据库·spring boot·mysql
派大星酷3 小时前
AOP 完整精讲:原理、核心概念、五种通知、切点语法、自定义注解实战
java·mysql·spring
健康平安的活着3 小时前
mysql中不同时间类型(date/datetime/timestamp)的查询案例
数据库·mysql
健康平安的活着6 小时前
mysql中left join 不一定比 in效率高案例
数据库·mysql