目前我正在运行一个查询来获取用户的所有帖子,然后在循环中,我正在查询该特定帖子的最新3条评论。超效率低下;我一遍又一遍地查询每个帖子。
我想巩固我的查询,以便我查询一次所有的帖子,只是一次对这些特定的帖子的所有评论。此刻,我有一个逗号分隔的列表,我为这个用户的所有帖子(例如:" 1、5、18、9")
posts
table:
-
posts
.id -
posts
.userid
comments
table:
-
comments
.id -
comments
.relid(这是postid) -
comments
.userid
查询应该使用我拥有的$posts_list,它是逗号分隔的帖子列表。或者对该用户的所有帖子进行子选择,但这似乎效率低下,因为我已经在字符串中拥有了帖子列表。
非常感谢你的帮助!
试试这个查询-
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).