ORA-01427: 单行子查询返回多个行 怎么改造?

update Eq_gpcs_placesupplydtl dtl set PlaceSupplyID=(
select PlaceSupplyID from Eq_gpcs_placesupply bill where bill.easid = dtl.easid)
where dtl.easid = ''

不知道是数据重复? 还是数据大小的问题了

如果那个子查询, 返回多行相同的数据, 可以使用 distinct 来处理。
例如:
update Eq_gpcs_placesupplydtl dtl set PlaceSupplyID=(
select DISTINCT PlaceSupplyID from Eq_gpcs_placesupply bill where bill.easid = dtl.easid)
where dtl.easid = ''

如果那个子查询, 返回多行不同的数据, 可以使用 MAX 或者 MIN 来处理。
例如:

update Eq_gpcs_placesupplydtl dtl set PlaceSupplyID=(
select MAX( PlaceSupplyID ) from Eq_gpcs_placesupply bill where bill.easid = dtl.easid)
where dtl.easid = ''
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-14
可以用inupdate Eq_gpcs_placesupplydtl dtl set PlaceSupplyID in (
select PlaceSupplyID from Eq_gpcs_placesupply bill where bill.easid = dtl.easid)
where dtl.easid = ''追问

不行呢,不可以用In吧

本回答被提问者和网友采纳

ORA-01427:单行子查询返回多个行 在线急等 急急急!!!高手帮帮小_百度知...
结论:当尝试使用SQL查询从疾病管理_糖尿病_专案登记表中获取独特( distinct)的建案时间月份时,如果数据集中存在不同月份的建案,如4月、5月和6月,原始查询确实会返回多行,具体为每个月份的数字。如果你想精确统计4月份的建案记录,你需要调整查询语句,以达到计数目的目的。正确的SQL查询应该是:SE...

ORA-01427: 单行子查询返回多个行 怎么改造?
如果那个子查询, 返回多行相同的数据, 可以使用 distinct 来处理。例如:update Eq_gpcs_placesupplydtl dtl set PlaceSupplyID=(select DISTINCT PlaceSupplyID from Eq_gpcs_placesupply bill where bill.easid = dtl.easid)where dtl.easid = ''如果那个子查询, 返回多行不同的数据, ...

ORA-01427:单行子查询返回多个行
解决方法:查询中肯定有返回多行的情况,试着在子查询中加入rownum<2,也就是限制返回一行数据。更改后的:“select a.id,a.case_id,e.case_name,e.case_code,(select enddate from ol_apply_process where id=a.id and result =10 and rownum=1) as enddate from ol_apply a,ol_case ...

ORA-01427: 单行子查询返回多于一个行,请问怎么改
把括号里的 group by gsbm 全部改为 and gsbm = a.gsbm 即可。

ora01427 单行子查询返回多个行 update set(a,b,c)=(select a1,b1,c1...
稍微改改就可以了 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应当的值应当是唯一的,不然仍然会提示单行子查询返回多个行。

oracle ORA-01427:单行子查询返回多个行
找每个子查询的主键,只要主键没有完全包含在子查询的WHERE子句中,就有可能发生该错误。另外你可以在WHERE子句中添加and rownum<=1来解决。不过最好还是查清原因再考虑解决方案,因为说不定就是你漏掉了某些主键条件

ORA-01427: 单行子查询返回多于一个行,请问怎么改?
(1)把三个子语句执行哈,看哪个子语句有多条记录;(2)把每张表的唯一索引弄出来分析。select a.next_point,t.c_name,a.item_id,a.s_num,(select unique o.name from org o,item_procedure a where o.orgid = a.to_org) as to_org,a.from_user,(select unique o.name from org o,...

oracle查询报错:ORA-01427
子查询返回的可能是多条记录。1)select q.id from q where q.fzr like '%"+fullname+"%'2)select q.id from Pro as q where q.pid=(select q.id from q where q.fzr like '%"+fullname+"%')你先执行1)再执行2),看看哪个返回的是多条记录。你可以改成 select * from Work as...

oracle ORA-01427:单行子查询返回多个行
,(select sheettypename from sheettype where id=(select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid)))可能是这个语句中的子查询返回了多个行,正常的话至允许返回一个值

ora01427 单行子查询返回多个行
CUS_BASE ,JBA_CUS_CERTINFO 中的c_cus_no字段有重复的。一种是去除c_cus_no字段的重复。一种的看你c_cus_no和c_cus_nme 对应关系。比如两个相同的c_cus_no你取最大的c_cus_nme 那就加max(c_cus_nme)。或者用rownum控制只返回一行。最终目的就是控制你的每次子查询只能有一条记录 ...

相似回答