请教两个查询

yaojie_x 2013-07-04 03:26:08
请教这两个查询的不同点,机制是什么?

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;
...全文
156 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
baojieearth 2013-07-17
引用 1 楼 qq1145174853 的回复:
首先来看下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的后面,所以第一条语句没有值。 如果帮助到你的话,请给分呀!!!!
不太明白 where 1=0不是没有数据显示的么?
回复
yaojie_x 2013-07-11
问题在于decode(count('1'),null,0,1) 处理的应该是两个函数的结果,貌似和结果集无关吧
回复
gao_allen 2013-07-09
回复
司马琦昂 2013-07-04
楼上解释相当到位
回复
lkq_david 2013-07-04
首先来看下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的后面,所以第一条语句没有值。 如果帮助到你的话,请给分呀!!!!
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2013-07-04 03:26
社区公告
暂无公告