如何在指定日期范围内为每一天查询2条随机记录?
解决方案:按日期批量抽取随机客户记录
假设你的客户记录表名为customer_records,包含日期字段date(格式为'YYYYMMDD')和用户ID字段user_id,可以用窗口函数实现一次查询覆盖整个日期范围,每天抽取2条随机记录:
SELECT date, user_id FROM ( SELECT date, user_id, -- 按日期分组,组内随机排序并生成序号 ROW_NUMBER() OVER (PARTITION BY date ORDER BY RAND()) AS rn FROM customer_records -- 限定目标日期范围 WHERE date BETWEEN '20221201' AND '20221205' ) t -- 筛选每组前2条随机记录 WHERE rn <= 2 ORDER BY date, rn;
不同数据库的适配说明
- PostgreSQL:将
RAND()替换为RANDOM() - SQL Server:由于
RAND()在同批次查询中会返回固定值,建议用ORDER BY NEWID()来实现真正的随机排序,内层查询的排序部分改为ORDER BY NEWID()
这样一次执行脚本就能得到2022年12月1日至5日每天的2个随机用户ID,无需按日期单独运行。
内容的提问来源于stack exchange,提问作者distressedinnhs
相关产品推荐
相关产品推荐

