暂无图片
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
打赏 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
打赏 0
DarkAthena

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

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

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

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

image.png

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

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

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

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

UPDATE A  

LEFT JOIN B ON A.id = B.id

SET A.name =B.name ; 

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
mysql碰到安全组扫描出来的漏洞之类的,如何处理?
回答 2
这个方案已经很详细了
mysql如何实现oracle的instr功能,可以指定开始检索的位置?
回答 2
mysql支持instr函数,和oracle上的instr用法一样
有没有大佬知道mysqldump 备份,cpu拉满导致崩溃,这个应该怎么看问题在哪儿
回答 3
最好看一下日志,里面有详细记录。
mgr 8.0.33自动切换的原因
回答 1
在MySQL8.0.33版本的集群中,如果发生自动切换,并且在改回来后仍然发生切换,你可以通过查看MySQL的错误日志和集群状态日志来了解切换发生的原因。以下是一些建议:1.错误日志:MySQL的错误
mysql分区表是否有split方式添加分区?
回答 3
可以尝试使用REORGANIZEPARTITION方式
多表导入mysql 问题
回答 1
CJK应该存在对应的接口。1.把数据导出txt或则直接写个脚本对接2.在导入到mysql里可以使用脚本。也可以使用myloader之类的工具
在 Oracle 或者 MySQL 中导致 SQL 查询无法使用索引的原因包括以下哪几项?
回答 4
ABCD
怎么查看Oracle执行过哪些SQL
回答 1
已采纳
1、awr2、vSQL3、vsession和v$SQL关联查出来4、sqldeveloper.exe中的SQL监控5、oracle的em中6、恩墨有SQM和白求恩两款软件
mysql 有增量检查点吗?如果有,从那个版本开始新增加的特性
回答 2
MySQL8.0版本中,引入了增量检查点的特性该特性将当前最大的自动增量计数器值在每次更改时写入重做日志,并保存到每个检查点的数据字典中。这样可以使当前最大的自动增量计数器值在服务器重新启动时保持不变
mysql 可以查看定时器执行的过程 有没有报错吗 ?
回答 1
除非你定时器写入表进行查询。否则不能查