首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法随机选择mysql中的分组数据?

有没有办法随机选择mysql中的分组数据?
EN

Stack Overflow用户
提问于 2021-12-21 06:38:09
回答 1查看 63关注 0票数 1

我有一个uid和anchorUid关系表名为userAnchor类图片,现在我需要从这个表中选择一些数据;

  1. 选择在本例中anchorUid=1为uid 1至10的所有行;
  2. 在步骤1中,从15%的结果中随机选择1行,在本例中,uid的结果为1;
  3. 在步骤1中,从中间35%的结果中随机选择2条线,在本例中,uid的结果在2-5中是随机的;
  4. 在步骤1中,从底部50%的结果中随机选择3条行,在本例中,uid的结果在6-10中是随机的;

我的问题是,我可以在一个sql中执行查询吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-21 09:15:03

代码语言:javascript
复制
WITH
cte1 AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY id) rn
          FROM test
          WHERE anchor_id = 1 ),
cte2 AS ( SELECT MAX(rn) cnt
          FROM cte1 ),
cte3 AS ( SELECT id,
                 ROUND(cnt * percent_from / 100) + 1 range_from, 
                 ROUND(cnt * percent_till / 100) range_till
          FROM cte2 
          CROSS JOIN percents ),
cte4 AS ( SELECT id, ROUND(range_from + RAND() * (range_till - range_from)) random_id
          FROM cte3)
SELECT cte1.id, cte1.uid, cte1.anchor_id
FROM cte4
JOIN cte1 ON cte4.random_id = cte1.rn;

演示小提琴给出了每一步的解释。

解决方案不是压缩/优化的。你可以自己动手。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70431516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档