2022-03-29
mysql update 子查询问题

mysq 5.7 如上,该怎么写SQL?
update A set A.name = (select name from B where A.id=B.id) ;
但是报错,mysql好像不允许set中有子查询。
我来答
添加附件
收藏
分享
问题补充
7条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

mysq 5.7 如上,该怎么写SQL?
update A set A.name = (select name from B where A.id=B.id) ;
但是报错,mysql好像不允许set中有子查询。
我实测了下,是支持的呢。估计你的B表中的id不是唯一的,或者A表中的id也不是唯一的
评论
有用 0mysql支持set中写子查询的,请使用以下写法更新
update A set A.name = (select name from B where A.id=B.id) where exists (select 1 from b where a.id=b.id);
评论
有用 0把你执行时的sql和报错信息截个图出来看看,
mysql5.7是支持更新时使用子查询的

评论
有用 0子查询里面改成这样试试 select name from A,B where A.id=B.id
评论
有用 0
我估计是楼上这种写法。这种写法就会报错。解决方案是再包一层。
评论
有用 0update a join b on a.id=b.id set a.name=b.name
评论
有用 0
墨值悬赏