sql更新数据出现问题

jingman66 2017-12-28 01:01:03
update A
  set (A.a2,A.a3 )=
  (select B.b2,b.b3
  from B
  where B.b1= A.a1 and A.a3=100
  )

比如以上 会提示 单行查询返回多行数据, 意思就是B 表查到是多行数据,我应该怎么解决这个问题那?
...全文
217 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
troy_211 2018-01-08
  • 打赏
  • 举报
回复
你们楼上写的sql确定能执行吗?楼主在子查询里增加 rownum=1 条件(oracle)就行了
  • 打赏
  • 举报
回复

update A,B
set A.a2=B.b2,A.a3=B.b3
where B.b1= A.a1 and A.a3=100
Camel_JM 2018-01-08
  • 打赏
  • 举报
回复
就是你要赋值的那个sql返回了多行的记录。
ooo-ooo 2018-01-06
  • 打赏
  • 举报
回复
引用 5 楼 oliver_105397 的回复:
更新嵌套了查询,mysql是不支持这么高级的功能的
参考一下这个:

delete/update from t where pid in (
		select temp.pid from (
			select pid from t group by pid HAVING count(1)>1
		) temp);
ooo-ooo 2018-01-06
  • 打赏
  • 举报
回复
更新嵌套了查询,mysql是不支持这么高级的功能的
zhangmin1992132 2018-01-05
  • 打赏
  • 举报
回复
单行查询返回多行数据,你在查询的时候只取第一条不就可以了吗,mysql用limit ,db2用 ffetch first 1 rows only不就行了吗
MiceRice 2018-01-05
  • 打赏
  • 举报
回复
问错板块了吧,而且也要先说明所使用数据库类型啊,话说感觉像是Oracle。。。 其次是,你没有解释清楚你的本意,究竟是只希望更新A表的一行数据,还是更新A表的多行数据。 如果是只想更新一行数据,那么就要解决必须让子查询只能返回单行结果。 最后,利用表关联进行更新,一般写法是(Oracle): Update A Set x = B.x , y = B.y From 表1 A, 表2 B Where A.id = B.id And 其它
jingman66 2017-12-28
  • 打赏
  • 举报
回复
您回答之前自己先想想,这种写法根本不行
feng00~ 2017-12-28
  • 打赏
  • 举报
回复

update a , b
set a.a2 = b.b2,a.a3 = b.b3
where a.a1 = b.b1
and a.a3 = 100

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧