2014-01-20 70 views
0

我的查詢基本上是這樣的:加入對選定的列

SELECT a, 
    (SELECT name 
    FROM table3 
    LIMIT 1) as b 
FROM table1 
GROUP BY b 

不過,我得到一個錯誤說「未知列‘B’組聲明」。

那麼,我該如何正確地爲這個子選擇的列指定一個別名呢?

編輯:我實際上想要做的是更復雜一點。我有產品分配到子類別。一種產品可能有多個子類別。每個子類別都被分配到一個主類別,並且一個產品可能只有一個子類別在一個主類別中。然後,我有一個專門爲產品分配價格的專欄。現在,當我想要查看在某個主類別中花了多少錢時,我會按照主類別加入表格並對它們進行分組,然後使用SUM(價格)。但是,如果一個產品有多個子類別,則會多次計數。這裏的查詢是我迄今發現的唯一方法,省略了這個問題。

+1

什麼是你真正想幹什麼?目前這似乎是[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 –

+0

您不需要別名後面的列,只需使用「GROUP BY名稱」而不是「GROUP BY b」。即使那樣你的整體查詢也是不正確的,因爲你的GROUP BY列表和SELECT列表會有所不同。 –

+0

下面的答案解決了我的問題。非常感謝你的努力,Aziz! – eevaa

回答

3
SELECT * FROM 
(
    SELECT a, 
    (SELECT name 
    FROM table3 
    LIMIT 1) as b 
    FROM table1 
) as R 
GROUP BY b 
1

你必須在SELECT語句中使用選擇

像這樣

SELECT * FROM 
(
    SELECT a,(SELECT name FROM table3 LIMIT 1) as b FROM table1 
) As Temp 

GROUP BY b