请教这两个查询的不同点,机制是什么?select t.dummy, decode(count('1'), null,0, 1) from dual t where 1 = 0 group by t.dummy;select decode(count('1'), null,0, 1) from dual t where 1 = 0;

解决方案 »

  1.   

    首先来看下dual是个什么东东
    1. dual 确实是一张表.是一张只有一个字段,一行记录的表. 
    2.习惯上,我们称之为'伪表'.因为他不存储主题数据.
    3. 他的存在,是为了操作上的方便.因为select 都是要有特定对象的.
    接下来看看你的语句
    1.想来让你郁闷的是第二条为什么查出来的是1,而第一条没数据,问题就出在count('1')上面,count('1')返回的值为0,你decode(count('1'),null,0,1)结果为1就可以理解了。
    2.至于第一条语句你理解了执行顺序就可以相通了。sql的执行顺序是这样子的
    from--where--group by--having--select--order by,select 在group的后面,所以第一条语句没有值。
    如果帮助到你的话,请给分呀!!!!
      

  2.   

    问题在于decode(count('1'),null,0,1) 处理的应该是两个函数的结果,貌似和结果集无关吧
      

  3.   

    不太明白 where 1=0不是没有数据显示的么?