在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