2011-06-09 48 views
3

我有一个查询:如何消除GROUP BY中使用的SELECT子句的标签?

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子句中的名称,而不是表中的名称。

我觉得有点奇怪,如果我想选择标签的两个实例之一(表格的列)中的一个,但是如果我想选择另一个(列的结果)。

回答

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

如果您想组的表达,你会怎么做:

Group By (some expression) 

即,不要在集团通过使用别名。使用表达式本身。唯一的另一种方法是将带有表达式的查询封装到派生表/子查询中。