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

SQL查询插入测试数据时如何从固定选项列表获取随机值

实现方案(PostgreSQL 环境适用)

你可以通过数组随机取值的方式快速实现需求,修改后的完整SQL如下:

INSERT into onboarding_tasks (business_name, created_at, status)
SELECT
    'Business name ' || id AS business_name,
    (NOW() + (random() * (NOW() + '90 days' - NOW())) + '30 days') AS created_at,
    (ARRAY['NEW', 'IN_PROGRESS', 'COMPLETED'])[floor(random() * 3 + 1)] AS status
FROM generate_series(1,25) as g(id);

逻辑说明

  • 先将三个可选状态值组装成一个文本数组ARRAY['NEW', 'IN_PROGRESS', 'COMPLETED']
  • random()会生成0到1之间的随机浮点数,乘以3之后得到0到3之间的数值,用floor()取整后得到0、1、2三个整数,加1之后就得到1、2、3三个符合PostgreSQL数组下标规则的索引值
  • 数组会根据随机生成的下标取出对应的状态值,实现等概率随机取值的效果

如果你需要自定义不同状态的出现概率,可以用CASE WHEN的写法灵活调整权重:

INSERT into onboarding_tasks (business_name, created_at, status)
SELECT
    'Business name ' || id AS business_name,
    (NOW() + (random() * (NOW() + '90 days' - NOW())) + '30 days') AS created_at,
    CASE 
        WHEN random() < 0.4 THEN 'NEW' -- 40%概率出现NEW
        WHEN random() < 0.7 THEN 'IN_PROGRESS' -- 30%概率出现IN_PROGRESS
        ELSE 'COMPLETED' -- 剩余30%概率出现COMPLETED
    END AS status
FROM generate_series(1,25) as g(id);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:27:04