码迷,mamicode.com
首页 > 其他好文 > 详细

group by 和where 条件后面不能用刚设置的别名。

时间:2018-03-31 14:21:20      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:结果   select   count   别名   条件   group   通过   use   rom   

select count(*),c_xy_bj a from z_user group by c_xy_bj     这个group by后面不能使用c_xy_bj 字段的别名a,只有外面再嵌套select查询才能使用字段别名a
select c_xy_bj a from z_user where c_xy_bj = ‘Y‘      这个where后面不能使用c_xy_bj 字段的别名a,只有外面再嵌套select查询才能使用字段别名a

 

同理,两个字段加减乘除算出来的值,如果取别名,想通过别名来做查询条件,那么也只能再外面嵌套select查询时才能用做条件;但是如果用原字段来查询是可以的。

select c_usernm,c_xy_bj,c_usernm||c_xy_bj ub from z_user where c_usernm||c_xy_bj = ‘陈明辉Y‘      这个sql是可以的。

select c_usernm,c_xy_bj,c_usernm||c_xy_bj ub from z_user where ub = ‘陈明辉Y‘    这个sql是不行的。

 

1.where 条件不能放在 group by后面,比如这个sql就是错误的:select count(*),c_xy_bj a from z_user group by c_xy_bj where c_xy_bj = ‘Y‘

2.group by后面只能使用having来做查询,having查询本来也是分组之后进行的查询,接下来这两个sql才是对的:select count(*),c_xy_bj a from z_user group by c_xy_bj having c_xy_bj = ‘Y‘

select count(*) cnt,c_xy_bj a from z_user group by c_xy_bj having count(*) = 28

3.对分组函数得到的结果进行查询不能使用where,只能使用having,实在没有使用group by进行分组的情况下也可以使用having来查询分组函数得到的结果

select count(*) cnt from z_user where count(*) = 5062 这个sql是错的

select count(*) cnt from z_user having count(*) = 5062 这个sql是对的

group by 和where 条件后面不能用刚设置的别名。

标签:结果   select   count   别名   条件   group   通过   use   rom   

原文地址:https://www.cnblogs.com/shenzhichipingguo/p/8681759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!