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

MySQL中为employees表group列的NULL值分配1-10随机数

给NULL值分配1-10随机数的解决方案

没问题,这个需求很好实现,核心就是用UPDATE语句配合随机函数,只针对group列值为NULL的行做更新就行。不过不同数据库的随机函数写法有点差异,我给你列几个常用数据库的具体实现:

MySQL/MariaDB

MySQL里用RAND()生成0到1之间的随机小数,配合FLOOR()取整就能得到1-10的整数。注意group是SQL关键字,要加反引号转义:

UPDATE employees
SET `group` = FLOOR(RAND() * 10) + 1
WHERE `group` IS NULL;

每次执行RAND()都会生成新的随机数,所以每个NULL行都会拿到不同的1-10之间的整数。

PostgreSQL

PostgreSQL用random()函数,逻辑和MySQL类似,关键字group要用双引号转义:

UPDATE employees
SET "group" = floor(random() * 10) + 1
WHERE "group" IS NULL;

也可以用类型转换简化写法:(random() * 10)::int + 1,效果完全一样。

SQL Server

SQL Server里直接用RAND()的话,所有NULL行会拿到同一个随机数,所以得用NEWID()来保证每行的随机数不同:

UPDATE employees
SET [group] = ABS(CHECKSUM(NEWID())) % 10 + 1
WHERE [group] IS NULL;

原理是NEWID()生成唯一的标识符,CHECKSUM()把它转成整数,取绝对值后对10取模得到0-9,加1就变成1-10了。

Oracle

Oracle可以直接用DBMS_RANDOM.VALUE()指定范围,非常直观:

UPDATE employees
SET "group" = FLOOR(DBMS_RANDOM.VALUE(1, 11))
WHERE "group" IS NULL;

DBMS_RANDOM.VALUE(1,11)会生成1到11之间的小数(不包含11),取整后就是1-10的整数。

小提示

执行UPDATE之前,建议先跑个SELECT语句验证随机数是否符合预期,比如MySQL下可以这么写:

SELECT FLOOR(RAND() * 10) + 1 AS random_group
FROM employees
WHERE `group` IS NULL;

确认没问题再执行UPDATE,避免误操作~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:46:16