从 MySQL 中的另一个表获取最新行

Chr*_*tow 0 mysql

假设我有两个表,新闻和评论。

news (
  id,
  subject,
  body,
  posted
)

comments (
  id,
  parent,  // points to news.id
  message,
  name,
  posted
)
Run Code Online (Sandbox Code Playgroud)

我想创建一个查询,以获取最新的 x # 条新闻以及每条新闻帖子的最新评论的名称和发布日期。

就选择子查询中的所有注释而言,速度很重要,这不是一个选项。

小智 5

我刚刚意识到,如果新闻表中没有附加评论,则查询不会返回结果,这是修复方法以及帖子总数的添加列:

SELECT news.*, comments.name, comments.posted, (SELECT count(id) FROM comments WHERE comments.parent = news.id) AS numComments
FROM news
LEFT JOIN comments
ON news.id = comments.parent
AND comments.id = (SELECT max(id) FROM comments WHERE parent = news.id) 
Run Code Online (Sandbox Code Playgroud)