查询主题&多个表中的类别

时间:2011-05-31 18:20:06

标签: mysql

我遇到了MySQL的问题。我有两个表,类别和主题。我想选择所有类别并加入其中categories.id等于max topics.id的主题,其中topics.cat_id等于categories.id。基本上我试图显示一个类别列表,然后显示该类别下的最新主题。

到目前为止,这是我的选择声明:

SELECT
    *
FROM 
    categories 
LEFT JOIN 
    topics 
ON 
    categories.cat_id = (SELECT 
                             MAX(topics.id), topic_cat 
                         FROM 
                             topics 
                         WHERE 
                             topic_cat = categories.cat_id)
GROUP BY 
    categories.cat_id

我怎样才能有效地做到这一点?我收到错误“操作数应包含1列”。

1 个答案:

答案 0 :(得分:0)

你应该考虑更新你的select子句,只从两个表中拉出你需要的列(可能会有重复的列带*),但是给它一个镜头:

select *
from categories c
left join topics t
     on c.cat_id = t.topic_cat
     and t.id = (select MAX(id) from topics where topic_cat = c.cat_id)