Mysql 如何在原始查询中找到成员的最新帖子?

Mysql 如何在原始查询中找到成员的最新帖子?,mysql,Mysql,我正在为我的网站写一篇特写,找到最热门的海报。我从members表中选择记录,并根据成员拥有的帖子数量对其进行排序 我想展示每一位成员的最新帖子信息。到目前为止,我有一个右联接,可以查找每个成员发布的文章数(不包括0篇文章的成员),这就是查询的排序依据。还有一个左连接来查找成员的化身信息,但这并不相关。让你知道这是什么 我从来都不擅长编写连接,尤其不擅长编写子查询。如何添加联接或子查询以查找每个成员的最新文章?“articles”表中需要的列是article_id和title 这是我目前的查询:

我正在为我的网站写一篇特写,找到最热门的海报。我从members表中选择记录,并根据成员拥有的帖子数量对其进行排序

我想展示每一位成员的最新帖子信息。到目前为止,我有一个右联接,可以查找每个成员发布的文章数(不包括0篇文章的成员),这就是查询的排序依据。还有一个左连接来查找成员的化身信息,但这并不相关。让你知道这是什么

我从来都不擅长编写连接,尤其不擅长编写子查询。如何添加联接或子查询以查找每个成员的最新文章?“articles”表中需要的列是article_id和title

这是我目前的查询:

SELECT
m.member_id, m.display_name, m.avatar_id,
a.article_id, a.author_id, COUNT(a.article_id) AS total_articles,
av.attachment_id AS av_attachment_id, av.file_name              
FROM members AS m
RIGHT JOIN articles AS a ON (m.member_id = a.author_id)
LEFT JOIN attachments AS av ON (m.avatar_id = av.attachment_id)
GROUP BY m.member_id
ORDER BY total_articles DESC
LIMIT 5
这就足够了:

SELECT
  m.member_id,
  m.display_name,
  m.avatar_id,
  a.article_id,
  a.title,
  (SELECT COUNT(*) FROM articles AS b WHERE b.author_id = m.member_id) AS total_articles,
  av.attachment_id AS av_attachment_id,
  av.file_name
FROM members AS m
JOIN articles AS a
  ON a.article_id = (SELECT MAX(b.article_id) FROM articles AS b WHERE b.author_id = m.member_id)
LEFT JOIN attachments AS av
  ON m.avatar_id = av.attachment_id
ORDER BY total_articles DESC
LIMIT 5

假设articles表上有一个date列,我通常只是按article_id desc limit 1排序,以查找最近的记录。