2014-07-14 63 views
0

我寫了這個:爲什麼我在這個連接表上收到錯誤?

SELECT DISTINCT CATEGORY FROM T AS T1 
    CROSS JOIN (SELECT * 
       FROM T 
       WHERE T.CATEGORY = T1.CATEGORY 
       ORDER BY CATEGORY DESC 
       LIMIT 10) 

,我收到此

「在 'where子句' 未知列 'T1.CATEGORY'」。

爲什麼?


更新:
我對此的目的是爲了獲得任何類別的10個職位。

+0

。在你的T1 – bumbumpaw

回答

0

在JOIN條件應該使用ON關鍵字

SELECT DISTINCT CATEGORY FROM T AS T1 
    CROSS JOIN SELECT * FROM T ON T.CATEGORY = T1.CATEGORY 
       ORDER BY CATEGORY DESC LIMIT 10; 
+0

ITYM'... CROSS無類別列JOIN T ON ...' 。 – glglgl

1

因爲T1從子查詢中是不可見的。

您的JOIN也沒有任何用途和/或您可能忘記了JOIN條件。

0

如果你需要得到每個類別的10個職位,你可以使用這樣的查詢:

SELECT CATEGORY, Post 
FROM (
    SELECT a.CATEGORY, a.Post, count(*) as rn 
    FROM #T a 
    JOIN #T b ON a.CATEGORY = b.CATEGORY AND a.Post >= b.Post 
    GROUP BY a.CATEGORY, a.Post) dt 
WHERE rn < 11;