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