PostgreSQL循环查询:获取评论表10个父ID及关联回复
解决评论回复关联表的查询需求
Alright, let's work through this together. From your description, you need to first pull 10 unique parent IDs from your comment-reply table, then retrieve all reply records linked to those parent IDs. Here's a straightforward, efficient way to do this:
核心思路
- 先从表中筛选出10个不重复的
parentid值(避免重复父ID导致结果数量不足) - 基于这10个父ID,查询所有与之关联的回复记录
示例SQL代码
-- 获取10个唯一parentid对应的所有回复 SELECT * FROM your_table_name WHERE parentid IN ( SELECT DISTINCT parentid FROM your_table_name WHERE parentid IS NOT NULL -- 可选:排除无父ID的主评论 LIMIT 10 ) -- 可选:按回复创建时间排序 ORDER BY postcreation DESC;
代码说明
DISTINCT parentid:确保拿到的是10个不同的父ID,不会因为重复记录导致实际父ID数量不足WHERE parentid IS NOT NULL:如果你的表中parentid为空代表主评论(而非回复),加上这个条件可以只筛选作为父级的ID;不需要过滤的话可以直接去掉LIMIT 10:精准控制只获取10个目标父ID- 外层通过
IN子句匹配所有属于这10个父ID的回复记录
如果想按特定顺序选父ID(比如最新的10个父评论),可以给子查询加排序:
SELECT * FROM your_table_name WHERE parentid IN ( SELECT DISTINCT parentid FROM your_table_name WHERE parentid IS NOT NULL ORDER BY postcreation DESC -- 按创建时间倒序取最新的10个父ID LIMIT 10 ) ORDER BY postcreation DESC;
记得把your_table_name替换成你实际的表名哦!
内容的提问来源于stack exchange,提问作者LUser
相关产品推荐
相关产品推荐

