mysql group by 别名_[转]为什么group by后面不能使用别名(除MySQL)
同事工作中遇到一個(gè)問題:
select? ?count(billingdate),to_char(billingdate,'YYYYmm') month
from tu_trade
where?to_char(billingdate,'YYYY') ='2017'and reportstat = 30
group by month;
-----執(zhí)行報(bào)錯(cuò),can't resolve month............
因?yàn)镾ql語句執(zhí)行順序
(7)????SELECT
(8)????DISTINCT
(1)????FROM
(3)???? JOIN
(2)????ON
(4)????WHERE
(5)????GROUP BY
(6)????HAVING
(9)????ORDER BY
(10)???LIMIT
Group by不能用別名的原因,因?yàn)閳?zhí)行到groupby(5)時(shí),還沒執(zhí)行到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中別名的使用都是嚴(yán)格遵循sql執(zhí)行順序的,groupby后面不能用別名。mysql特殊是因?yàn)閙ysql中對(duì)查詢做了加強(qiáng)。
參考
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的mysql group by 别名_[转]为什么group by后面不能使用别名(除MySQL)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java json解析哪个好_java常
- 下一篇: redis mysql原理_MYSQL