【问题标题】:Get latest 3 comments for a list of posts获取帖子列表的最新 3 条评论
【发布时间】:2011-09-12 06:33:40
【问题描述】:

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

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

posts表:

  • posts.id
  • posts.userid

comments表:

  • comments.id
  • comments.relid(这是 postid)
  • comments.userid

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

非常感谢您的帮助!

【问题讨论】:

  • 为了获得更好的答案,您还可以包含您当前的脚本。因此人们可以确定循环顺序。但是,可能没有必要。只要检查一下,如果你得到高质量的答案:)

标签: php mysql join subquery


【解决方案1】:

试试这个查询 -

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)。

【讨论】:

    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多