欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

mysql group by 别名_[转]为什么group by后面不能使用别名(除MySQL)

发布时间:2023/12/10 62 豆豆
生活随笔 收集整理的这篇文章主要介绍了 mysql group by 别名_[转]为什么group by后面不能使用别名(除MySQL) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

同事工作中遇到一个问题:

select   count(billingdate),to_char(billingdate,'YYYYmm') month

from tu_trade

where to_char(billingdate,'YYYY') ='2017'and reportstat = 30

group by month;

-----执行报错,can't resolve month............

因为Sql语句执行顺序

(7)    SELECT

(8)    DISTINCT

(1)    FROM

(3)     JOIN

(2)    ON

(4)    WHERE

(5)    GROUP BY

(6)    HAVING

(9)    ORDER BY

(10)   LIMIT

Group by不能用别名的原因,因为执行到groupby(5)时,还没执行到select中的别名,所以别名还没生效。所以别名只能放到(7)之后,比如order中,distinct中。

遇到这种问题可以使用子查询替代

select month,count(month)

from

(selectcount(billingdate),to_char(billingdate,'YYYYmm')  as month

from tu_trade

where to_char(billingdate,'YYYY') ='2017'and reportstat = 30) a

group by month;

注意:

在mysql中,group by中可以使用别名;where中不能使用别名;order by中可以使用别名。其余像oracle,hive中别名的使用都是严格遵循sql执行顺序的,groupby后面不能用别名。mysql特殊是因为mysql中对查询做了加强。

参考

创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖

总结

以上是生活随笔为你收集整理的mysql group by 别名_[转]为什么group by后面不能使用别名(除MySQL)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。