同时获取新闻和评论

时间:2013-05-08 06:06:39

标签: mysql sql

我有两张桌子。

消息

news_id | header | text

news_comments

comment_id | comment | date | fk_news_id

目前我只是把这个消息拉出来。但是,我也想提取意见,但我不太确定我是否可以进行单一查询,或者我是否应该首先提取新闻,然后是评论。

哪种方法(如果两种方法都可能)会更好?

2 个答案:

答案 0 :(得分:2)

使用INNER JOIN

SELECT  a.*, b.*
FROM    news a
        INNER JOIN news_comments b
            ON a.news_ID = b.fk_news_id
ORDER   BY a.news_ID, b.comment_ID

要进一步了解联接,请访问以下链接:

上述声明只会返回至少有一条评论的news,如果您想要在没有评论的情况下返回所有新闻,请使用LEFT JOIN

SELECT  a.*, b.*
FROM    news a
        LEFT JOIN news_comments b
            ON a.news_ID = b.fk_news_id
ORDER   BY a.news_ID, b.comment_ID

答案 1 :(得分:2)

我不确切地知道你的想法是不是......

SELECT 'N' AS type, news_id, header, text, NULL AS date
FROM news
UNION
SELECT 'C' AS type, fk_news_id AS news_id, NULL AS header, comment AS text, date
FROM comments
ORDER BY news_id, type desc

这将为您提供单个结果集,但在从结果中检索注释数据时您必须考虑不同的列名