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

PostgreSQL按分组随机选取2条记录 SQL查询求助

解决PostgreSQL分组随机选取记录的问题

嘿,这个需求用PostgreSQL的窗口函数就能完美搞定!我帮你把完整的查询语句写出来,再给你拆解下逻辑:

SELECT field_1, field_2, field_4
FROM (
    SELECT 
        field_1, 
        field_2, 
        field_4,
        -- 给每个field_2分组内的记录按随机顺序分配行号
        ROW_NUMBER() OVER (PARTITION BY field_2 ORDER BY RANDOM()) AS row_num
    FROM mytable
) AS ranked
-- 筛选每个分组里行号≤2的记录,也就是随机的2条
WHERE row_num <= 2;

逻辑拆解:

  • 内层子查询用**ROW_NUMBER()**窗口函数,按field_2分组(PARTITION BY field_2),每组内的记录通过ORDER BY RANDOM()实现随机排序,然后给每条记录分配一个行号row_num。
  • 外层查询只保留row_num <= 2的记录,这样每个分组就会得到最多2条随机选取的记录(如果某个分组的记录数不足2条,就会返回该分组的全部记录)。

如果你的需求里还需要其他字段,直接在SELECT列表里添加就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:10:47