回答

收藏

GROUP BY子句的别名?

技术问答 技术问答 286 人阅读 | 0 人回复 | 2023-09-12

在MySQL中,可以在SELECT在句子中创建GROUP
9 a7 ^# C9 j  N) J4 u) SBY使用子句中的别名(见参见MySQL参考)。
7 ^4 y# k5 n' D5 a, ]我只想知道为什么我不能GROUP BY创建别名并存SELECT使用它,别名遵循SELECT句子的执行顺序。
1 M7 v) u! D2 \; O换句话说,为什么以下语法不符合语法?
! t3 D; i1 f. J  c3 ^SELECT region,SUM(population)  FROM population_us_states GROUP BY       CASE state_name               WHEN 'CT' THEN 'New England        WHEN 'RI' THEN 'New England        WHEN 'MA' THEN 'New England        WHEN 'ME' THEN 'New England        WHEN 'NH' THEN 'New England        WHEN 'VT' THEN 'New England        WHEN 'CA' THEN 'West Coast        WHEN 'OR' THEN 'West Coast        WHEN 'WA' THEN 'West Coast          ELSE 'other' END AS region;                , c" S7 a" e8 T- I. I  @" ?3 B& `% ~
    解决方案:                                                                ! f# j& g+ ]. d& @7 {$ z2 F$ j+ F
                                                                使用嵌套的SELECT-内部的一个提取总体并生成计算的列,然后外部的一个可以使用GROUP BY该列:
, c+ x5 s$ }: u2 a6 U% c8 U8 A5 ?SELECT region,SUM(population) FROM (   SELECT CASE ...   ... AS region,population FROM population_us_states )GROUP BY region
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则