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 单行子查询返回多个行, 求解 展开
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 单行子查询返回多个行, 求解 展开
2个回答
展开全部
错误的意思就是你更新的时候指定更新的值是多个了,语句有问题,没有明确指定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应当的值应当是唯一的,不然仍然会提示单行子查询返回多个行。
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应当的值应当是唯一的,不然仍然会提示单行子查询返回多个行。
展开全部
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)
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 指定一个子查询,检测 行 的存在。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询