oracle ORA-01427:单行子查询返回多个行
select*from(selecta.*,rownumrow_numfrom(selecta.directflag,(selectsheettypenamefromsh...
select * from (select a.*,rownum row_num from (select a.directflag,(select sheettypename from
sheettype where id=(select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid)))
sheettypename,(select code||'-'||abbrev from channel where channelid=a.outcomecustomer)
outcustomer,(select code||'-'||abbrev from channel where channelid=a.incomecustomer)
incustomer,(select balancetype from balancetypeset where id=a.balancetypeid)
balancetype,(select goodsno||'-'||goodsname from goods where goodsid=a.goodsid)
goodsnanme,a.quantity,a.price,a.amount,a.accdate from channelaccount a where 1=1
and a.incomecustomer='acd488efdcc8f4a0ae2e42ebbe8e2f72') a) where row_num>0 and row_num<=20
执行报ORA-01427:单行子查询返回多个行
求高人指点 展开
sheettype where id=(select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid)))
sheettypename,(select code||'-'||abbrev from channel where channelid=a.outcomecustomer)
outcustomer,(select code||'-'||abbrev from channel where channelid=a.incomecustomer)
incustomer,(select balancetype from balancetypeset where id=a.balancetypeid)
balancetype,(select goodsno||'-'||goodsname from goods where goodsid=a.goodsid)
goodsnanme,a.quantity,a.price,a.amount,a.accdate from channelaccount a where 1=1
and a.incomecustomer='acd488efdcc8f4a0ae2e42ebbe8e2f72') a) where row_num>0 and row_num<=20
执行报ORA-01427:单行子查询返回多个行
求高人指点 展开
4个回答
展开全部
,(select sheettypename from
sheettype where id=(select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid)))
可能是这个语句中的子查询返回了多个行,正常的话至允许返回一个值
sheettype where id=(select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid)))
可能是这个语句中的子查询返回了多个行,正常的话至允许返回一个值
追问
把=改成了in是返回多个值,但是还是报一样的错误
追答
select a.directflag,(select sheettypename from
sheettype where id=(select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid)))
其中
,(select sheettypename from
sheettype where id=(select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid
部分也必须返回一个值,否则没有办法和a.directflag构成一个元组
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
,(select sheettypename from
sheettype where id=(select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid))
这里的moduleid是主键吗?还有其他主键吗?
id呢?是不是只有这一个主键,如果还有其他的,你就必须加上另外一个主键,否则取出来仍然是多条。
sheettype where id=(select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid))
这里的moduleid是主键吗?还有其他主键吗?
id呢?是不是只有这一个主键,如果还有其他的,你就必须加上另外一个主键,否则取出来仍然是多条。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-08
展开全部
在你的子查询中返回多行,你的限制不全
追问
如何修改让限制完全
追答
这个就看你的需求了
select sheettypeid from moduletype where moduleid=trim(a.sheetidruleid)
你在你的数据库里先泡一下这句话,检索结果肯定是多余一行的,你看一下检索结果,然后自己限制一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询