第一个表:temp_test表的库表创建语法说明如下:
CREATE TABLE TEMP_TEST
(
AY_OTHER_PARTY VARCHAR2(20 BYTE),
AY_LOG_ID INTEGER NOT NULL
)
TABLESPACE CC_DATA
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
select * from temp_jiang;
第二个表:temp_jiang表的库表说明如下:
CREATE TABLE TEMP_JIANG
(
AY_CALLED VARCHAR2(50 BYTE),
AY_CALL_ID VARCHAR2(50 BYTE)
)
TABLESPACE CC_DATA
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
update temp_jiang a set a.ay_called = (select b.ay_other_party from temp_test b where a.ay_call_id = b.AY_LOG_ID);
执行以上语句以后,toad报错如下:ora-01427:single-row subquery returns more than row
12 个解决方案
#1
update temp_jiang a set a.ay_called = (select b.ay_other_party from temp_test b where a.ay_call_id = b.AY_LOG_ID);
其中的select b.ay_other_party from temp_test b where a.ay_call_id = b.AY_LOG_ID返回的记录多于1条吧,这样就会报错ingle-row subquery returns more than row,你可以检查一下,
改为这样:
update a set a.ay_called = b.ay_other_party from temp_jiang a, temp_test b where a.ay_call_id = b.AY_LOG_ID
#2
update temp_jiang a set a.ay_called = b.ay_other_party
from temp_test b where a.ay_call_id = b.AY_LOG_ID;
#3
update a set a.ay_called = b.ay_other_party
from temp_jiang a
join temp_test b
on a.ay_call_id = b.AY_LOG_ID;
#4
update
a
set
a.ay_called = b.ay_other_party
from
temp_jiang a ,temp_test b
where
a.ay_call_id = b.AY_LOG_ID
#5
各位大侠,提示一下,sql中的updte语句不能直接带 from 语句啊 楼上的各位提供的都是直接带from的语句
#6
学习一下
#7
楼上的 update语句中直接带 from 语句 报错啊:ora-00900:invalid SQL statement
#8
sql语句可以带FROM,好像ACEESEE数据库不能
#9
oracle的也不能直接带from啊
#10
oracle的话则如下:
--如果所有的记录都匹配
update temp_jiang set ay_called = (select ay_other_party from temp_test where temp_test.AY_LOG_ID = temp_jiang.ay_call_id);
--如果存在不匹配的记录。
update temp_jiang set ay_called = (select ay_other_party from temp_test where temp_test.AY_LOG_ID = temp_jiang.ay_call_id)
where ay_call_id in (select distinct AY_LOG_ID from temp_test) ;
#11
10楼的肯定是高手中的高手,能考虑异常情况,不至于造成数据紊乱!谢谢!
#12
但是不知道是怎么回事,依然报:ora-01427:single_row subquery returns more than one row
该现象怪异的很,在另一个oracle版本一样的数据库里面执行这个语句,可以通过。但是在本数据库中执行报以上错误。不知道如何解决单行对多行的错误。请指教!
该现象怪异的很,在另一个oracle版本一样的数据库里面执行这个语句,可以通过。但是在本数据库中执行报以上错误。不知道如何解决单行对多行的错误。请指教!
#1
update temp_jiang a set a.ay_called = (select b.ay_other_party from temp_test b where a.ay_call_id = b.AY_LOG_ID);
其中的select b.ay_other_party from temp_test b where a.ay_call_id = b.AY_LOG_ID返回的记录多于1条吧,这样就会报错ingle-row subquery returns more than row,你可以检查一下,
改为这样:
update a set a.ay_called = b.ay_other_party from temp_jiang a, temp_test b where a.ay_call_id = b.AY_LOG_ID
#2
update temp_jiang a set a.ay_called = b.ay_other_party
from temp_test b where a.ay_call_id = b.AY_LOG_ID;
#3
update a set a.ay_called = b.ay_other_party
from temp_jiang a
join temp_test b
on a.ay_call_id = b.AY_LOG_ID;
#4
update
a
set
a.ay_called = b.ay_other_party
from
temp_jiang a ,temp_test b
where
a.ay_call_id = b.AY_LOG_ID
#5
各位大侠,提示一下,sql中的updte语句不能直接带 from 语句啊 楼上的各位提供的都是直接带from的语句
#6
学习一下
#7
楼上的 update语句中直接带 from 语句 报错啊:ora-00900:invalid SQL statement
#8
sql语句可以带FROM,好像ACEESEE数据库不能
#9
oracle的也不能直接带from啊
#10
oracle的话则如下:
--如果所有的记录都匹配
update temp_jiang set ay_called = (select ay_other_party from temp_test where temp_test.AY_LOG_ID = temp_jiang.ay_call_id);
--如果存在不匹配的记录。
update temp_jiang set ay_called = (select ay_other_party from temp_test where temp_test.AY_LOG_ID = temp_jiang.ay_call_id)
where ay_call_id in (select distinct AY_LOG_ID from temp_test) ;
#11
10楼的肯定是高手中的高手,能考虑异常情况,不至于造成数据紊乱!谢谢!
#12
但是不知道是怎么回事,依然报:ora-01427:single_row subquery returns more than one row
该现象怪异的很,在另一个oracle版本一样的数据库里面执行这个语句,可以通过。但是在本数据库中执行报以上错误。不知道如何解决单行对多行的错误。请指教!
该现象怪异的很,在另一个oracle版本一样的数据库里面执行这个语句,可以通过。但是在本数据库中执行报以上错误。不知道如何解决单行对多行的错误。请指教!