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

如何从含duplicateid的Questions表随机获取5条非重复组记录?

解决方案

核心思路

先将所有问题按重复关系分组(主问题与其所有重复项为同一组),每组随机选取一条记录作为代表,最后从这些组代表中随机抽取5条结果。

实现SQL(适用于SQL Server)

WITH GroupedQuestions AS (
    SELECT 
        *,
        -- 统一分组标识:主问题用自身ID,重复项关联主问题ID
        GROUP_ID = ISNULL(duplicateid, questionid),
        -- 组内生成随机排序序号
        ROW_NUMBER() OVER (PARTITION BY ISNULL(duplicateid, questionid) ORDER BY NEWID()) AS RowNum
    FROM Questions
),
GroupRepresentatives AS (
    -- 每组随机选一条记录
    SELECT *
    FROM GroupedQuestions
    WHERE RowNum = 1
)
-- 从所有组代表中随机取5条
SELECT TOP 5 questionid, question, duplicateid
FROM GroupRepresentatives
ORDER BY NEWID();

关键逻辑说明

  • 分组标识:通过ISNULL(duplicateid, questionid)将主问题(duplicateid为NULL)和它的所有重复项(duplicateid指向主问题ID)归为同一组
  • 组内随机选值:利用ROW_NUMBER()结合NEWID()在每个组内生成随机排序,仅保留每组的第一条记录,确保每组仅出现一个代表
  • 最终随机抽取:从所有组代表中再次随机筛选5条,满足随机且无重复组的要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:09:27