where语句后面各个条件的优先级

wuxin52115288 2013-03-19 05:32:47
小弟初学ORACLE对于where后面的优先级不是很清楚。只知道where后面从最末尾开始往前吗, 可是总觉得一些条件会有优先级比如:exist,order by,group by,之类的,谁能跟小弟详细讲解下么
...全文
960 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
我和喵星人 2014-04-17
  • 打赏
  • 举报
回复
引用 1 楼 music_mouse 的回复:
自己先列出个列表,where后面可跟的关键字是哪些? 我先以你拿出的为例,谈谈: 总体的轮廓是: select * from table where 条件=? group by 分组字段 order by 排序字段; exists用法跟in类似,用于做条件限制的,如果要用它,它只能放在条件部分 group by是用来分组的,它放在where条件之后 order by 排序用的,放到最后。
你知道人家问的是什么吗?就在这一通乱说。。。
wuxin52115288 2013-03-20
  • 打赏
  • 举报
回复
引用 2 楼 linwaterbin 的回复:
查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by
版主大大,你好可以,解释下是不是先group by在执行having 再执行order by么?还是反过来的?
wuxin52115288 2013-03-20
  • 打赏
  • 举报
回复
引用 1 楼 music_mouse 的回复:
自己先列出个列表,where后面可跟的关键字是哪些? 我先以你拿出的为例,谈谈: 总体的轮廓是: select * from table where 条件=? group by 分组字段 order by 排序字段; exists用法跟in类似,用于做条件限制的,如果要用它,它只能放在条件部分 group by是用来分组的,它放在where条件之后 o……
你好,是先group by,然后再having ,再order by 么,还是返回来的?
wuxin52115288 2013-03-20
  • 打赏
  • 举报
回复
引用 7 楼 linwaterbin 的回复:
引用 6 楼 wuxin52115288 的回复:引用 2 楼 linwaterbin 的回复:查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 版主,你好,那要是有个 order by)rownum>=1这个语句这样写,是排序好在,再从排序号的结果中选取第一条么? ……
额,就是随便举个例子。没注意这个,就是关于那个排序的问题,是先排序好在,再从排序号的结果中选取第一条么
music_mouse 2013-03-20
  • 打赏
  • 举报
回复
order by 都是最后执行。group by 和where 都是在order by 执行前。 你就记住,SQL的执行顺序是:先where 后group by 最后order by 就行。 学习慢慢来,都有个过程。祝你早日学成。
wuxin52115288 2013-03-20
  • 打赏
  • 举报
回复
引用 11 楼 music_mouse 的回复:
引用 9 楼 wuxin52115288 的回复: 引用 1 楼 music_mouse 的回复:自己先列出个列表,where后面可跟的关键字是哪些? 我先以你拿出的为例,谈谈: 总体的轮廓是: select * from table where 条件=? group by 分组字段 order by 排序字段; exists用法跟in类似,用于做条件限制的,如果要用它,它只能放……
你好,那是先执行gruop by 还是先order by。以前是记从where开始最后一个关键字开始往左进行,是这样的么?比如最后一个关键字是order by,是先排序好了,在进行group by分组么。菜鸟一只,问的有点弱,见谅下哈。
music_mouse 2013-03-20
  • 打赏
  • 举报
回复
引用 9 楼 wuxin52115288 的回复:
引用 1 楼 music_mouse 的回复:自己先列出个列表,where后面可跟的关键字是哪些? 我先以你拿出的为例,谈谈: 总体的轮廓是: select * from table where 条件=? group by 分组字段 order by 排序字段; exists用法跟in类似,用于做条件限制的,如果要用它,它只能放在条件部分 group b……
having 是依赖于group by的,所以它放在group by 后面,跟group by 算是一个整体,放在order by 前面
music_mouse 2013-03-20
  • 打赏
  • 举报
回复
引用 14 楼 wuxin52115288 的回复:
引用 13 楼 music_mouse 的回复:order by 都是最后执行。group by 和where 都是在order by 执行前。 你就记住,SQL的执行顺序是:先where 后group by 最后order by 就行。 学习慢慢来,都有个过程。祝你早日学成。 那请问下,where +条件,应该是先执行完条件,在group by 最后再orde……
对的
wuxin52115288 2013-03-20
  • 打赏
  • 举报
回复
引用 13 楼 music_mouse 的回复:
order by 都是最后执行。group by 和where 都是在order by 执行前。 你就记住,SQL的执行顺序是:先where 后group by 最后order by 就行。 学习慢慢来,都有个过程。祝你早日学成。
那请问下,where +条件,应该是先执行完条件,在group by 最后再order by吧。 先谢谢你了!
linwaterbin 2013-03-19
  • 打赏
  • 举报
回复
引用 6 楼 wuxin52115288 的回复:
引用 2 楼 linwaterbin 的回复:查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 版主,你好,那要是有个 order by)rownum>=1这个语句这样写,是排序好在,再从排序号的结果中选取第一条么?
你语法错了 rownum>=1 没结果吧?
wuxin52115288 2013-03-19
  • 打赏
  • 举报
回复
引用 2 楼 linwaterbin 的回复:
查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by
版主,你好,那要是有个 order by)rownum>=1这个语句这样写,是排序好在,再从排序号的结果中选取第一条么?
wuxin52115288 2013-03-19
  • 打赏
  • 举报
回复
引用 3 楼 zhaoxiangchong 的回复:
exist主要用在外循环中,in主要是内循环
你好,麻烦可以举个例子么。。。外循环和内循环的例子。谢谢
wuxin52115288 2013-03-19
  • 打赏
  • 举报
回复
引用 1 楼 music_mouse 的回复:
自己先列出个列表,where后面可跟的关键字是哪些? 我先以你拿出的为例,谈谈: 总体的轮廓是: select * from table where 条件=? group by 分组字段 order by 排序字段; exists用法跟in类似,用于做条件限制的,如果要用它,它只能放在条件部分 group by是用来分组的,它放在where条件之后 o……
那要是这样写exist(select 1 from dual --) group by 2 and having count(1)>=5这样写,是先执行exist,还是先执行group by这些语句之后再判断
善若止水 2013-03-19
  • 打赏
  • 举报
回复
exist主要用在外循环中,in主要是内循环
linwaterbin 2013-03-19
  • 打赏
  • 举报
回复
查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by
music_mouse 2013-03-19
  • 打赏
  • 举报
回复
自己先列出个列表,where后面可跟的关键字是哪些? 我先以你拿出的为例,谈谈: 总体的轮廓是: select * from table where 条件=? group by 分组字段 order by 排序字段; exists用法跟in类似,用于做条件限制的,如果要用它,它只能放在条件部分 group by是用来分组的,它放在where条件之后 order by 排序用的,放到最后。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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