ora01427 单行子查询返回多个行 update set(a,b,c)=(select a1,b1,c1 from )

oracle数据库updatetableset(a,b,c)=(selecta1,b1,c1fromtable1)whereain(selecta1fromtable1)... oracle数据库 update table set(a,b,c)=(select a1,b1,c1 from table1) where a in(select a1 from table1)
table
a b c
1 2 3
11 22 33

table1
a1 b1 c1
1 2 2
11 2 2

我是把table1 的数据修该到table中去
table
a b c
1 2 2
11 2 2

报错 ora01427 单行子查询返回多个行, 求解
展开
 我来答
几个木头
2014-05-05 · 超过10用户采纳过TA的回答
知道答主
回答量:21
采纳率:100%
帮助的人:22.7万
展开全部
错误的意思就是你更新的时候指定更新的值是多个了,语句有问题,没有明确指定table的哪行更新为table1的哪行,稍微改改就可以了
update table set(b,c)=(select b1,c1 from table1 where a = a1 )
其中a要去掉,也就是将table中a对应的b,c的值更新为table1中a1=a的列对应的b,c的值。不过也应注意,table1中a1应当的值应当是唯一的,不然仍然会提示单行子查询返回多个行。
华夏日长兴
推荐于2018-03-13 · TA获得超过9592个赞
知道大有可为答主
回答量:6305
采纳率:85%
帮助的人:3710万
展开全部
update table t1
set (t1.b, t1.c) =
(select t2.b1, t2.c1 from table1 t2 where t1.a = t2.a1)
where exists (select 1 from from table1 t2 where t1.a = t2.a1)
追问
exists (select 1 from from table1 t2 where t1.a = t2.a1) 这是什么意识  select 1 from from table1 看不懂
追答
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False
EXISTS 指定一个子查询,检测 行 的存在。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式