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

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是对的

posted @ 2018-03-31 12:44  神只吃苹果  阅读(4486)  评论(0编辑  收藏  举报