select t.age from t_user t where t.id = 1语句的执行结果是空,没有记录
select sum(t.age) from t_user t where t.id = 1语句的执行结果,却返回了一条空记录,求解答为什么,谢谢!!!!!!

解决方案 »

  1.   

    那我 select max(dummy) from dual where 1=2 group by dummy 为什么没返回值呢?
      

  2.   


    或者,select sysdate from dual where 1=2 这个也是函数,也检索不到记录,为什么有?
      

  3.   

    test 碰到传说中得大姨妈了?
      

  4.   

    感觉还是这位朋友说的更贴切点,俺是菜鸟,不懂,嘿嘿,有group by确实没有返回值,但没有group by就有1条空记录返回,还是不太明白深层的原因
      

  5.   

    Select语句完整的执行顺序
      
        1、from子句组装来自不同数据源的数据;
        2、where子句基于指定的条件对记录行进行筛选;
        3、group by子句将数据划分为多个分组;
        4、使用聚集函数进行计算;
        5、使用having子句筛选分组;
        6、计算所有的表达式;
        7、使用order by对结果集进行排序。
        8、执行select。
     个人理解  因为group by 在where后在max前执行  在执行where后返回空集  再对这个空集进行分组取最大值 当然没值了  如果没分组会返回空值  所以这里group会对max有影响
      

  6.   

    select count(*) 还能返回0值呢。在分组函数中会有返回结果的。你用select count(*) from (select max/min/sum/count(col) from )
    都有结果的。