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;

怪哉。

相关推荐
o***741712 小时前
一条sql 在MySQL中是如何执行的
数据库·sql·mysql
源码宝12 小时前
诊所门诊系统源码,采用SpringBoot+Vue2.0+MySQL技术栈开发,满足门诊部-诊所/中小型及连锁门诊搭建信息化平台
spring boot·后端·mysql·源码·门诊系统·医疗信息化·诊疗门诊
m***923812 小时前
【MySQL】C# 连接MySQL
数据库·mysql·c#
xingyue_S12 小时前
MySQL 数据库(一) -- 初体验
数据库·mysql·oracle
x***440112 小时前
【prometheus】监控MySQL并实现可视化
数据库·mysql·prometheus
k***817212 小时前
使用Canal将MySQL数据同步到ES(Linux)
linux·mysql·elasticsearch
h***047712 小时前
MySQL 的 INSERT(插入数据)详解
android·数据库·mysql
田超凡12 小时前
深入理解MySQL_4 数据存储
mysql·java-ee
u***276112 小时前
【MySQL】数据库和表的操作
数据库·mysql·oracle
g***557512 小时前
【MySQL基础篇】概述及SQL指令:DDL及DML
sql·mysql·oracle