oracle10g-在查询结果列中添加rownum列,查询出的条数增多

作者:用户 来源:互联网 浏览:386 次 时间:2016-11-01 16:17:39

oracle10grownumcase

oracle10g-在查询结果列中添加rownum列,查询出的条数增多 - 摘要: 在查询结果列中添加rownum列,查询出的条数增多sql语句结构selectrownumastempNum,.....from(select.....where....orderbyAD.detail

问题描述

在查询结果列中添加rownum列,查询出的条数增多

sql语句结构
select rownum as tempNum,
.....
from (select .....
where....

order by AD.detailaddressstr, CUSTOMEREN.CUSTOMERADDRSTR) temp
where (case when ... then ...else end);
如果查询结果列中有rownum,查询出的数据会比不添加rownum的结果列多出很多。
Oracle的版本时10.2.0.1.0.

在某个库里出现了这种情况
这是where后面的条件
where (case
when 1 is null then
'x'
else
(case
when 1 = 0 and temp.number0 = 0 and 0 = 2 then
'x'
when 1 = 1 and temp.number1 > 0 and 1 = 2 then
'x'
when 1 = 1 and temp.number2 > 0 and 2 = 2 then
'x'
else
'y'
end)
end)

    temp.number是最外层查询出来的结果列,在有rownom时,发现where后只有temp.number>0时条数是对的,加上temp.number=0就出现条数多。
    但是把rownum去掉,查询上面的语句条数就正常。

where (case
when 1 is null then
'x'
else
(case
when 1 = 1 and temp.number1 > 0 and 1 = 2 then
'x'
when 1 = 1 and temp.number2 > 0 and 2 = 2 then
'x'
else
'y'
end)
end)

    这样条数是对的。

解决方案

如果rownum没有作为条件的话,这怎么可能呢。

解决方案二:

有null值吧, 加个非null的判断

解决方案三:

在某个库里出现了这种情况
这是where后面的条件
where (case
when 1 is null then
'x'
else
(case
when 1 = 0 and temp.number0 = 0 and 0 = 2 then
'x'
when 1 = 1 and temp.number1 > 0 and 1 = 2 then
'x'
when 1 = 1 and temp.number2 > 0 and 2 = 2 then
'x'
else
'y'
end)
end)

        temp.number是最外层查询出来的结果列,在有rownom时,发现where后只有temp.number>0时条数是对的,加上temp.number=0就出现条数多。
        但是把rownum去掉,查询上面的语句条数就正常。


        where (case
     when 1 is null then
      'x'
     else
      (case
                     when 1 = 1 and temp.number1 > 0 and 1 = 2 then 
         'x'
        when 1 = 1 and temp.number2 > 0 and 2 = 2 then 
         'x'
                     else
         'y'
      end)
   end)

        这样条数是对的。
【云栖快讯】青年们,一起向代码致敬,来寻找第83行吧,云栖社区邀请大神彭蕾、多隆、毕玄、福贝、点评Review你的代码,参与互动者将选取50位精彩回复赠送“向代码致敬”定制T恤1件,最终成为“多隆奖”的小伙伴还将获得由阿里巴巴提供的“多隆奖”荣誉证书和奖杯。  详情请点击
云栖社区(yq.aliyun.com)为您免费提供oracle10g-在查询结果列中添加rownum列,查询出的条数增多相关信息,包括 oracle10grownum case 的信息 ,所有oracle10g-在查询结果列中添加rownum列,查询出的条数增多相关内容均不代表云栖社区的意见! 该页面h5页面的地址是:https://m.aliyun.com/yunqi/wenzhang/show_65113,您可以点击oracle10g-在查询结果列中添加rownum列,查询出的条数增多-手机站访问。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备

热点导航