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

如何在SQL Server中为表的bit列按80-20概率随机赋值?

解决方案

要给表中RandomNumber(bit类型)列按80%为0、20%为1的比例随机赋值,这里提供两种实用的SQL实现方式:

方法1:固定数量更新(适配已知总记录数为10的场景)

先将所有记录的RandomNumber设为0,再随机挑选2条更新为1:

-- 第一步:将所有记录的RandomNumber设为0
UPDATE YourTableName
SET RandomNumber = 0;

-- 第二步:随机选2条设为1(SQL Server语法)
UPDATE TOP(2) YourTableName
SET RandomNumber = 1
ORDER BY NEWID();

如果是MySQL数据库,第二步可替换为:

UPDATE YourTableName
SET RandomNumber = 1
ORDER BY RAND()
LIMIT 2;

方法2:按比例动态分配(支持任意总记录数)

通过窗口函数对记录随机排序,再按20%的比例分配1,其余设为0:

WITH RankedRecords AS (
    SELECT 
        RandomNumber,
        ROW_NUMBER() OVER(ORDER BY NEWID()) AS RowNum,
        COUNT(*) OVER() AS TotalCount
    FROM YourTableName
)
UPDATE RankedRecords
SET RandomNumber = CASE 
    WHEN RowNum <= TotalCount * 0.2 THEN 1
    ELSE 0
END;

MySQL中可以用变量实现类似逻辑:

SET @row_num = 0;
SET @total_count = (SELECT COUNT(*) FROM YourTableName);

UPDATE YourTableName
SET RandomNumber = CASE 
    WHEN (@row_num := @row_num + 1) <= @total_count * 0.2 THEN 1
    ELSE 0
END
ORDER BY RAND();

示例结果

IdRandomNumber
10
20
30
41
50
60
70
81
90
100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:45:30