SQL语句中having为什么可以操作as声明的别名?

ggggg123213 2016-04-16 10:19:54
请着重讲解原理。
众所周知在mysql查询语句关键字中,select关键字运行顺序是在having后,在order by前。
那么既然是如此,select coloum as 别名 更不应该可以被having操作吧?因为在having运行的的时候,select还没运行呢,也就是没产生视图吧。
是我理解的有误,还是他有另外一种运行方式(例如运行sql语句前率先初始化..等等)
望懂的人不吝赐教,谢谢!

mysql/oracle 都可以讲讲
...全文
911 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
mysql可以,having可以使用select 中的表达式的别名,也可以使用表达式本身
zkzhong 2016-04-21
  • 打赏
  • 举报
回复
Oracle中having是对分组后的结果集操作的,所以不行的
bo871747022 2016-04-18
  • 打赏
  • 举报
回复
Oracle确实是不行的,MySql不知道。
再坚持一下 2016-04-18
  • 打赏
  • 举报
回复
你试过了? mysql 不知道,oracle是不行的。下次有环境先试试
ggggg123213 2016-04-17
  • 打赏
  • 举报
回复
引用 楼主 kk25885 的回复:
请着重讲解原理。 众所周知在mysql查询语句关键字中,select关键字运行顺序是在having后,在order by前。 那么既然是如此,select coloum as 别名 更不应该可以被having操作吧?因为在having运行的的时候,select还没运行呢,也就是没产生视图吧。 是我理解的有误,还是他有另外一种运行方式(例如运行sql语句前率先初始化..等等) 望懂的人不吝赐教,谢谢! mysql/oracle 都可以讲讲
是可以的,至少MySQL是这样,Oracle我不知道了。。。 你可以加个as 试试
永远都学不完 2016-04-16
  • 打赏
  • 举报
回复
真的可以吗? 我执行下面的语句都是错误的:
select field1,count(1) c from test2
group by field1
having C>3;
而这个就是正确的:
select field1,count(1) c from test2
group by field1
having COUNT(1)>3;

17,082

社区成员

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

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