如何更新SQL列将其赋值为1-10范围内的随机整数?
MySQL更新字段为1-10不重复随机数方案
前提说明
1-10区间仅存在10个不重复的整数,因此仅当project1everything表的总行数≤10时可实现该需求,超出则需调整随机数取值范围。
实现步骤(适配MySQL 8.0+最新版本)
操作前先执行备份命令,避免数据更新错误:
CREATE TABLE project1everything_bak AS SELECT * FROM project1everything;
正式更新语句
将语句中的你的表主键字段替换为project1everything表实际的主键字段名即可执行:
UPDATE project1everything t JOIN ( -- 给原表所有行随机排序并分配1~N的行号(N为表总行数) SELECT *, ROW_NUMBER() OVER(ORDER BY RAND()) AS row_num FROM project1everything ) t2 ON t.你的表主键字段 = t2.你的表主键字段 JOIN ( -- 生成1~10的随机排序序列 SELECT 1 AS rand_num UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 ORDER BY RAND() ) s ON t2.row_num = s.rand_num SET t.views = s.rand_num;
校验逻辑
更新完成后可执行以下语句验证views字段无重复、取值均在1-10区间内:
-- 校验重复值,正常返回结果为空 SELECT views, COUNT(*) FROM project1everything GROUP BY views HAVING COUNT(*) > 1; -- 校验取值范围,正常返回结果为空 SELECT views FROM project1everything WHERE views < 1 OR views >10;
内容的提问来源于stack exchange,提问作者Arthur Silva
相关产品推荐
相关产品推荐

