请教这两个查询的不同点,机制是什么?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;
解决方案 »
- 如何用POWER DESIGNER来从SQL2008(2000)导出表到ORACLE中?
- oracle升级到10.2.0.4后,启动数据库提示错误ORA-01034:ORACLE not available
- oracle package里面procedure调用function的问题,在线等结果
- 关于删除重复记录的几个问题
- 怎样写一个匿名过程调试这个返回结果集的存储过程
- 如何在9i中给新加的一个用户定义只有对一个视图只读的权限。我已添加了一个用户,只是不知怎么定义才能只有只读一个视图的权限
- ORACLE查询
- qmail + oracle 是如何在linux 9上安装配置实现的
- 急呀急!!关于用低版本EXP.EXE放入高版本oracle里导数据的问题!!大家帮帮忙。。
- 在delphi中使用ado如何调用oracle的存储过程(菜鸟问题,不要见笑)
- 游标修改
- 请教两个查询
insert into ttt values(1);
commit;select a, count(1) from ttt where 1 = 0 group by a;
select count(1) from ttt where 1 = 0;
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的后面,所以第一条语句没有值。
如果帮助到你的话,请给分呀!!!!
count('1')应该有结果
decode(count('1'), null,0, 1)应该处理count('1')的结果,为什么加入了分组以后反而没有结果。
decode(count('1'), null,0, 1)为什么就没有值了呢?