暂无图片
mysql update 子查询问题
我来答
分享
佳佳
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条回答
默认
最新
cqiwen

我实测了下,是支持的呢。估计你的B表中的id不是唯一的,或者A表中的id也不是唯一的

暂无图片 评论
暂无图片 有用 0
刘浩

mysql支持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
DarkAthena

把你执行时的sql和报错信息截个图出来看看,
mysql5.7是支持更新时使用子查询的
image.png

暂无图片 评论
暂无图片 有用 0
暂无图片
GreatSQL

子查询里面改成这样试试 select name from A,B where A.id=B.id

暂无图片 评论
暂无图片 有用 0
chengang

image.png

我估计是楼上这种写法。这种写法就会报错。解决方案是再包一层。

暂无图片 评论
暂无图片 有用 0
陈伟华

update a join b on a.id=b.id set a.name=b.name

暂无图片 评论
暂无图片 有用 0

UPDATE A  

LEFT JOIN B ON A.id = B.id

SET A.name =B.name ; 

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏