-2

我有两张桌子。

消息

news_id | header | text

新闻评论

comment_id | comment | date | fk_news_id

目前我只是拉出新闻。但是,我也想拉评论,但我不太确定是否可以进行单个查询,或者是否应该先拉新闻,然后再拉评论。

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

4

2 回答 2

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
于 2013-05-08T06:09:20.663 回答
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

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

于 2013-05-08T07:07:24.727 回答