ORA-01427: 单行子查询返回多于一个行

作者&投稿:徭莉 (若有异议请与网页底部的电邮联系)
ORA-01427:单行子查询返回多个行~

由于查询结果有多行造成,确保查询结果只有一行数据。这样就不会报错了。
【错误例子】
“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) as enddate from ol_apply a,ol_case e”,报错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 e”。

由于查询结果有多行造成,确保查询结果只有一行数据。这样就不会报错了。
【错误例子】
“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) as enddate from ol_apply a,ol_case e”,报错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 e”。

单行子查询返回多于一个行

UPDATE LZ_CONT A
   SET (A.PYERNM) =
       (SELECT DISTINCT B.PYBKNA
          FROM SUNFRS.BEFIXSIGN B
         WHERE A.PYERBK = B.PYERBK)
 WHERE A.SIGNDT < '20141024';

这样试试,加一个distinct,因为(SELECT DISTINCT B.PYBKNA
          FROM SUNFRS.BEFIXSIGN B
         WHERE A.PYERBK = B.PYERBK)这个结果集里反回了多行数据,应该是重复的(如果你的逻辑没错的话)加个distinct去重



返回多条记录应该不能更新,应该是第一个查询没有返回那两条相同的数据,因此可以更新。


我的笔记本电脑是wind7系统的为何不能玩红色警戒2共和国之辉_百度知...
使用兼容性模式运行游戏,1、打开游戏的安装目录,找到“Ra2.exe”,然后右击,点击属性。2、勾选“以兼容性模式运行这个程序”,选择“Windows XP (Service Pack 3 ”;然后再勾选“以管理员身份运行此程序”3、点击确定,再次双击“Ra2.exe”或者“桌面快捷方式”打开游戏,即可轻松进入游戏。

阳江市17044234506: oracle数据库查询报错:ORA - 01427: 单行子查询返回多个行 -
化贷二维: nvl是一个标量函数,在你的SQL语句中,nvl第一个参数是一个子查询.而该子查询是按日期统计用户登录的次数(group by t.riqi),如果查询范围在一天之内,因为t.riqi就是一个值,子查询的结果集中只有一条记录,是没有问题的;而如果查询的日期范围超出1天,且有用户在不同的日期有登录,那么子查询的结果集将会有多个记录.这样,nvl函数的第一个参数就是一个多值的结果集,而不是一个单值的结果集,就发生ORA-01427的错误了.

阳江市17044234506: ora01427 单行子查询返回多个行 -
化贷二维: 应该是你这两个表JBA_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控制只返回一行.最终目的就是控制你的每次子查询只能有一条记录

阳江市17044234506: ORA - 01427: 单行子查询返回多于一个行,请教高手:怎么改? -
化贷二维: 在update的时候,子查询返回是多条,你首先必须要确定怎么从这多条里面选择一条出来,比如你可以选最大的select max(lngactivitydetailid27) 最小的select min(lngactivitydetailid27),当然也可以选第一条出来,改完的句子类似于:update ...

阳江市17044234506: 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),看看哪个返回的是多条记录.你可...

阳江市17044234506: 错误:ORA - 01427: 单行子查询返回多于一个行,急~~~~ -
化贷二维: 你的返回值多余一行或者没有返回行的话,就不能用 into 的方式 可以用游标的方式: declare cur_a cursor is select(select t.dydj from wgkh_mx_info t where t.dh = dy_rb_Res.Mxbh) from dual; begin open cur_A; FETCH CUR_A into dydj ; loop .... ...

阳江市17044234506: ORA - 01427: 单行子查询返回多于一个行,请问怎么改? -
化贷二维: 表示楼主这个SQL 粘贴的太乱,根本看不下去,而且还是各种子查询的嵌套,问题已经很清楚了,把每个子查询单独执行以下就知道那里错了

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

阳江市17044234506: select ORA - 01427 :单行子查询返回多行 -
化贷二维: Try this, it should be much more effective than yours SELECT BO.VESSEL, BO.VOY, BO.ETD, BO.PORTLOAD, BO.PORTVIA, BO.PORTDEST, CASE WHEN CTNSIZE = 20 then BKCTN.PNUM ELSE NULL END, CASE WHEN CTNSIZE = 40 then BKCTN.PNUM ELSE NULL END, BO.GWET FROM BO LEFT JOIN BKCTN ON BO.BOID = BKCTN.BOID

阳江市17044234506: ORA - 01427:单行子查询返回多于一行 -
化贷二维: SELECT REPORT_ID, REPORT_NAME, B.COMPANYID, B.ORGNAME, (SELECT C.INSTANCE_ID FROM M_REPORT_INSTANCE C, M_AUDIT_REPORT AWHERE A.REPORT_ID = C.REPORT_ID AND B.COMPANYID = C.COMPANYID ...

阳江市17044234506: oracle decode中可以使用sql语句吗 -
化贷二维: 可以使用sql,不过要注意:1、SQL语句一定要用()括起来,不然会报错ORA-00936:缺失表达式;2、SQL语句返回的结果不能有多行,不然会报错ORA-01427:单行子查询返回多个行.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网