用户名:   自动登录 找回密码
密   码:    * 注册




发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
 文章标题 : update ORA-01427: 单行子查询返回多个行
帖子发表于 : 2012-04-08 11:18 
离线
头像

注册: 2011-05-01 9:15
帖子: 120
这种情况主要是由于 set column =(···) 括号里面返回了多个值导致的,通过下面的例子大家可以看到唯一性约束的重要性啦。

SQL> select * from b2;

ID NAME
---------- --------------------
3 awen
1 steven

SQL> select * from b1;

ID NAME
---------- --------------------
1 steven
1 awen
2 steven
3 oracle

SQL> update b2 set name = (select name from b1 where b1.id=b2.id);
update b2 set name = (select name from b1 where b1.id=b2.id)
*
第 1 行出现错误:
ORA-01427: 单行子查询返回多个行

SQL> select name from b1 where id = 1 ;

NAME
--------------------
steven
awen

显然是用问题的,set b2里面的name=2个值。


还有一种情况如下:
b1表中
SQL> select * from b1;

ID NAME
---------- --------------------
1 awen
1 awen
2 steven
3 oracle
2条记录是相同的,这样我们可以用distinct来做

SQL> select * from b2;

ID NAME
---------- --------------------
3 awen
1 steven

SQL> update b2 set name = (select distinct name from b1 where b1.id=b2.id);

已更新2行。

SQL> select * from b2;

ID NAME
---------- --------------------
3 oracle
1 awen


页首
 用户资料  
 
 文章标题 : Re: update ORA-01427: 单行子查询返回多个行
帖子发表于 : 2016-09-15 20:09 
离线
头像

注册: 2016-09-15 20:01
帖子: 2
I feel so happy that people in line, but it may be time to purchase French people believe in it.

_________________
sbobet


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 


在线用户

注册用户: 没有注册用户


查找:
前往 :  
cron
Powered by OraSql © 2011, 2012, oracle_awen