2011-06-09 39 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) 

即,不要在集團通過使用別名。使用表達式本身。唯一的另一種方法是將帶有表達式的查詢封裝到派生表/子查詢中。