MySQL 别名的问题

牛客网上的sql题

img

img

count函数后面跟*就可以正常获取返回值

img

但我把*改成gender也就是别名就提示无法找到gender这列,这是什么原因啊。求解答

因为别名是在select里面定义的,而count也写在select里面,它们在一个层级上,没有先后关系,所以会找不到别名
你写count(1)就行了,写count列名没有意义

因为gender别名是在select中申明的,并不在表结构中的,且和count同为select层级,所以无法找到

在group by中可以使用别名,但在SElECT字句中的聚合函数里面是不能写别名,
但是标准sql里面语句顺序是
先From子句
第二个就是where子句
第三执行的是group by
第四执行的是having
第五执行的是select字句
第六执行的是order by
这里group by可以使用别名感觉只是mysql数据库做了处理,但是不太符合标准sql语句的执行规范耶