mysql 查询更新操作

作者 : MOOMOO 本文共426个字,预计阅读时间需要2分钟 发布时间: 2022-04-26 共28人阅读

题:获取姓名为张三 的用户的age,并将age赋值给姓名赵六的的用户。原始数据:

一般的写法是:

UPDATE user SET age = ( SELECT age FROM user WHERE name = '张三' ) WHERE name = '赵六';

这样的写法对Oracle和SQLServer 来说都是正确的。但是mysql会报一个错误 :

原因是:mysql在from子句中遇到子查询时,先执行子查询并将结果放到一个临时表中,我们通常称它为“派生表”;临时表是没有索引、无法加锁的。

update时,会锁表,此时不能再select。所以会报错,

此时如果将结果集放入临时表,临时表不会上锁,所以,可以正常查询并更新。

正确的写法:

UPDATE user SET age = ( SELECT age  FROM ( SELECT * FROM user ) AS tb_temp WHERE name = '张三' ) WHERE	name = '赵六'
1. 本站所有资源来源于用户上传和网络,仅作为演示数据,如有侵权请邮件联系站长!
2. 本站客服QQ:4387159,唯一购买官网:MooMoo.TOP!
3. 盗版,破解有损他人权益和违法作为,请各位会员支持正版!
MooMoo » mysql 查询更新操作

常见问题FAQ

是否支持共享资源赚外快?
本站支持任何人上传资源,一经采用即可展示,客户下单既有80%的提成。
可以免费教技术吗?
大家可以加群进行探讨共同进步,重点问题管理员会进行解答。
我是小白要怎么学习?
加群后做到不耻下问,看文章学习演示就能成为大佬。

发表评论