我有两张桌子。
消息
news_id | header | text
新闻评论
comment_id | comment | date | fk_news_id
目前我只是拉出新闻。但是,我也想拉评论,但我不太确定是否可以进行单个查询,或者是否应该先拉新闻,然后再拉评论。
哪种方法(如果两者都可能)会更好?
利用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
不知道你心里是不是这样的。。。
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
这将为您提供一个结果集,但在从结果中检索评论数据时,您必须考虑不同的列名