我有一个问题:
SELECT
...
(some expression) AS Country
FROM
Sometable
...
GROUP BY Country;
Sometable
有一个名为Country
的列(无法更改)。Country
(也无法更改)。它有效(我希望GROUP BY
应用于结果列,这也是MySQL理解它的方式。)
但它发出警告:
Warning: Column 'Country' in group statement is ambiguous
所以,我想消除GROUP BY
的歧义。但我能找到的唯一限定符是指定数据库或表(如:Sometable.Country
)。如果标签用于两个不同的表,如果我想选择来自表的标签实例,那就没问题了。但我需要某种Select.Country
限定符来指定我要使用的名称是SELECT
子句中的名称,而不是表中的名称。
我觉得有点奇怪的是,如果我想选择标签的2个实例之一(表格的列),可以删除此警告,但如果我想选择另一个(不是结果)。
答案 0 :(得分:1)
SELECT a,b,c,d, country2 AS country FROM (
SELECT
a,b,c,d,
(some expression) AS Country2
FROM
Sometable
...
GROUP BY Country ) s;
答案 1 :(得分:1)
如果是你要分组的表达式,你可以这样做:
Group By (some expression)
即,不要在Group By中使用别名。使用表达式本身。唯一的另一种方法是将带有表达式的查询封装到派生表/子查询中。