请教两个查询

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;
...全文
202 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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的后面,所以第一条语句没有值。 如果帮助到你的话,请给分呀!!!!

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧