首页 > 数据库技术 > 详细

mysql无法使用子查询更新语句的解决方案_使用join语句更新或者临时变量

时间:2021-05-24 22:26:50      阅读:20      评论:0      收藏:0      [点我收藏+]

  前言:在sqlserver中,是可以使用子查询语句更新表数据的,如: update A set column1=(select column1 from B) where ID=1;但是这个语句在mysql-11.0.10版本依然不支持。  但是通过查找网上其他小伙伴的资料发现了,可以借用join语句来达到类似于子查询更新的目的,当然也可以借用mysql的临时变量存储值更新(但是临时变量无法想sqlserver一样支持类似于表结构的存在),还有建立存储过程当然也可以(这里不讨论)。

 

  解决方案一-使用join语句更新(推荐):

select * from vip_package_detail a
inner join vip_package_detail b on a.Type=b.Type and a.PackageID=b.PackageID+6
where a.LimitValue!=b.LimitValue and a.PackageID>=7

 

  解决方案二-使用临时变量;

set @ID=0;
select @ID:=ID from vip_package_detail where ID=1;
update A set ID=@ID where 1=1;

 

  其他解决方案:还有道友使用update---case --when-then语句;

 

参考方案:mysql 利用子查询更新表方法

  

mysql无法使用子查询更新语句的解决方案_使用join语句更新或者临时变量

原文:https://www.cnblogs.com/lxhbky/p/14805667.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!