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 ,请帮忙修改,谢谢
展开
 我来答
badkano
2014-06-04 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885373
团长

向TA提问 私信TA
展开全部
update zy a set a.yibao=(select min(b.yibao) from yb b where a.id=b.id)

我加min的地方你可以用max也行

还有,你a,id=b,id是你笔误把点写成逗号了吗?

无味!!哈哈
2014-06-04 · 超过12用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:34万
展开全部
后面的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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
麦盟房产专区
2014-06-04
知道答主
回答量:18
采纳率:0%
帮助的人:8.9万
展开全部
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 这个语句是返回多个值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
socl_ycl
2014-06-04 · 超过16用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:35.7万
展开全部
你的子查询中同样的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 确保只更新你需要更新的数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式