RT,搞不懂...在线等大神

解决方案 »

  1.   

    返回了一条空的记录,但是有记录,rowcount变1了.你可以再试试
      

  2.   

    select sum(1) from dual where 1=2
    返回为空,已验证了
      

  3.   

    因为没有记录,等同于 
    select sum(null) from dual;所以返回一条null的记录。
      

  4.   

    大概是这意思,我现在搞不懂的是select sum(1) from dual where 1=2 group by 1,为什么就不返回空记录了呢
      

  5.   

    大概是这意思,我现在搞不懂的是select sum(1) from dual where 1=2 group by 1,为什么就不返回空记录了呢
      

  6.   


    也返回空记录。
    首先,聚合函数至少返回一条记录
    其次,sum null的时候,出现的结果也是null,所以,返回了一条空记录,如果用count,那么你就看到结果是0的一条记录
      

  7.   

    你可以去试一下,加了group by之后就不返回任何记录了,至少oracle10g是这样的
      

  8.   

    为什么你们都说聚合函数一定会返回一条记录呢,可是我加了个group by之后就真没记录了,是oracle版本问题么,我的是10g的
      

  9.   

      首先 你要了解oracle的执行顺序  group by和聚合函数的先后顺序  LZ觉得对空值分组求和 还会有数据么 
      

  10.   


    oracle Select语句完整的执行顺序:1、from子句组装来自不同数据源的数据;
    2、where子句基于指定的条件对记录行进行筛选;
    3、group by子句将数据划分为多个分组;
    4、使用聚集函数进行计算;
    5、使用having子句筛选分组;
    6、计算所有的表达式;
    7、使用order by对结果集进行排序。
      

  11.   

    你现在的疑惑出现在group by身上
    group by 是对from 、where等过滤出来的结果集进行聚合:
        1)不加group by是全部,就算找不到,对sum,count,min,max也会返回一行,是空值
        2)加了group by,如果没有找到,那是不返回的