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