【问题标题】:Query Topics & Categories from multiple tables从多个表中查询主题和类别
【发布时间】:2011-06-01 02:23:01
【问题描述】:

我遇到了 MySQL 问题。我有两个表格,类别和主题。我想选择所有类别并加入其中 categories.id 等于最大 topic.id 的主题,其中 topic.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 列”。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您应该考虑更新您的 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)
    

    【讨论】:

    • 非常感谢!那行得通。感谢您对 select 子句的建议,我会这样做,我只是想在这里简短而甜蜜。
    • @adamcole83 很高兴它对您有用...请点击答案旁边的绿色复选标记接受答案。
    猜你喜欢
    • 2020-04-18
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多