You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按唯一parent_id限制SQL查询结果,获取含5个唯一父ID的排序数据

问题与解决方案

问题描述

现有一张包含id、score、parent_id列的表,数据已按score降序排序,原始数据如下:

idscoreparent_id
5859105859
215704395859
21064154821064154
51992751992
34384599651992
167576151675761
346572943465729
4012023401203
181745821817458

需求:查询表中所有列,保留原有排序,同时限制结果包含5个唯一的parent_id,最终仅保留parent_id为5859、21064154、51992、1675761、3465729的行,预期结果如下:

idscoreparent_id
5859105859
215704395859
21064154821064154
51992751992
34384599651992
167576151675761
346572943465729

解决方案

利用CTE(公共表表达式)先获取按score降序排列的前5个唯一parent_id,再关联原表筛选出这些分组的所有行,同时保留原排序:

WITH top_parents AS (
    -- 按score降序取前5个唯一parent_id
    SELECT DISTINCT parent_id
    FROM your_table_name
    ORDER BY score DESC
    LIMIT 5
)
-- 筛选出这些parent_id对应的所有行,保持原排序
SELECT t.*
FROM your_table_name t
JOIN top_parents tp ON t.parent_id = tp.parent_id
ORDER BY t.score DESC;

逻辑说明

  1. top_parents子查询:因为原表已按score降序排列,SELECT DISTINCT parent_id ORDER BY score DESC LIMIT 5会自动获取优先级最高(对应score最大)的5个唯一parent_id,正好匹配需求中的5个值。
  2. 关联原表:将原表与top_parents关联,筛选出属于这5个parent_id的所有行,最后按score降序排序,完全符合预期结果。

内容的提问来源于stack exchange,提问作者icelemon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:16:21