获取最新的3条评论的帖子列表

时间:2011-09-12 06:33:40

标签: php mysql join subquery

目前我正在运行一个查询以获取用户的所有帖子,然后在循环中,我正在查询该特定帖子的最新3条评论。效率极低;我一遍又一遍地查询每个帖子。

我想整合我的查询,以便我只查询所有帖子一次,对于那些特定帖子的所有评论只查询一次。目前我有一个以逗号分隔的列表,我为该用户的所有帖子(例如“1,5,18,9”)

posts表:

  • posts。ID
  • posts。用户ID

comments表:

  • comments。ID
  • comments。relid(这是postid)
  • comments。用户ID

查询应该使用我拥有的$ posts_list,这是以逗号分隔的帖子列表。或者是该用户的所有帖子的子选择,但这似乎效率低下,因为我已经在字符串中有了帖子列表。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

尝试此查询 -

SELECT p.id, p.userid, c.id, c.userid
  FROM posts p
  JOIN (
    SELECT c1.*, COUNT(*) rank FROM comments c1
    LEFT JOIN comments c2
      ON c2.relid = c1.relid AND c2.id <= c1.id
    GROUP BY c1.relid, c1.id
    ) c
  ON p.id = c.relid
WHERE rank < 4

并添加你需要的条件,即 - WHERE p.userid IN(1,5,18,9)。