oracle update语句,报错ora-01427
updatezyaseta.yibao=(selectb.yibaofromybbwherea,id=b,id)运行提示报错,ora-01427,请帮忙修改,谢谢...
update zy a set a.yibao=(select b.yibao from yb b where a,id=b,id)
运行提示报错,ora-01427 ,请帮忙修改,谢谢 展开
运行提示报错,ora-01427 ,请帮忙修改,谢谢 展开
4个回答
展开全部
后面的sql 语句:select b.yibao from yb b where a,id=b,id
返回多个值。。当然没法用 “=” 去匹配
返回多个值。。当然没法用 “=” 去匹配
更多追问追答
追问
那要怎么修改呢
追答
update zy a set a.yibao in (select b.yibao from yb b where a,id=b,id)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
update zy a set a.yibao in (select b.yibao from yb b where a,id=b,id)
select b.yibao from yb b where a,id=b,id 这个语句是返回多个值
select b.yibao from yb b where a,id=b,id 这个语句是返回多个值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的子查询中同样的id 包含了多条数据。
追问
哦 我懂了
追答
你的表结构不太清楚,可以试试下面两种情况:
1、可能是需要更新的字段是重复的,去重:
update zy a set a.yibao=(select b.yibao from yb b where a.id=b.id group by b.yibao)
where exists (select b.yibao from yb b where a.id=b.id);
2、不是重复的,取大者,或者小者也行(min())
update zy a set a.yibao=(select max(b.yibao) from yb b where a.id=b.id)
where exists (select b.yibao from yb b where a.id=b.id );
加上exists 确保只更新你需要更新的数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询