在MySQL中,可以在SELECT子句中创建的GROUP BY子句中使用别名(参见MySQL Reference)。GROUP BY子句的别名?
我只是想知道为什么它不可能在GROUP BY中创建一个别名并在SELECT中使用它,它遵循SELECT语句的执行顺序。
换句话说,为什么下面不合语法?
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;
为了更好的可维护性,这真的应该在自己的表中。它可以提供更好的性能,尽管额外加入(据推测,这种方式可以通过优化器与havok进行分组) –