为什么我在此连接表中收到错误?

时间:2014-07-14 06:28:12

标签: mysql sql

我写了这个:

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个任何类别的帖子。

3 个答案:

答案 0 :(得分:1)

因为从子查询中看不到T1。

您的JOIN也没有用处和/或您可能忘记了JOIN条件。

答案 1 :(得分:0)

在JOIN条件下,应使用开启关键字

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

答案 2 :(得分: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;