最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
mysql获取枚举随机值实践
时间:2026-07-05 10:43:32 编辑:袖梨 来源:一聚教程网
1.需求描述
在MySQL中,您可以使用ENUM类型定义列,并且可以从中选择随机值。但是,MySQL不支持直接从ENUM中随机选择值的函数。

您可以使用ELT函数结合FLOOR和RAND函数来实现这一点。
2.使用到的函数
elt函数
mysql中elt函数是用于字符串处理的函数之一,它用于从给定的字符串列表中选择一个字符串,根据指定的索引位置来确定返回哪个字符串。
elt函数的语法为“elt(index, string1, string2, string3, …)”,其中,index是要选择的字符串的索引位置,string1, string2, string3, …是要进行选择的字符串列表
语法
ELT(index, string1, string2, string3, …)
示例
SELECT ELT(1,'Apple','Banana','Cherry'); -- AppleSELECT ELT(3,'Apple','Banana','Cherry'); -- CherrySELECT ELT(4,'Apple','Banana','Cherry'); -- null
RAND() 函数
生成一个0到1的随机数
RAND() = 0.02871985549919294
FLOOR()函数
向下取整
FLOOR(3.6) = 3FLOOR(4.1) = 4
3.解决方案
手写生成:少量数据
以下是一个示例,假设您有一个名为my_table的表,该表有一个my_enum的ENUM类型列,该列有三个可能的值:‘Value1’, ‘Value2’, ‘Value3’。
SELECT ELT( FLOOR(RAND() * 3) + 1, 'Value1', 'Value2', 'Value3') AS random_enum_value;
这个查询首先使用RAND()函数生成一个0到1的随机数。然后,FLOOR()函数将这个随机数乘以3(因为您有3个ENUM值)并且取下限值,确保结果是一个0、1或2。
最后,ELT()函数使用这个计算出来的索引来返回相应位置的ENUM值。
从表中生成:多数据
如果您需要从表中随机选择一行,并获取其ENUM列的随机值,您可以使用类似的逻辑在SELECT查询中:
SELECT ELT( FLOOR(RAND() * (SELECT COUNT(*) FROM my_enum_column_options)) + 1, (SELECT value1 FROM my_enum_column_options), (SELECT value2 FROM my_enum_column_options), (SELECT value3 FROM my_enum_column_options)) AS random_enum_valueFROM my_tableLIMIT 1;
在这个查询中,my_enum_column_options是一个包含所有ENUM值的虚拟表(您需要替换为您自己的查询)。
COUNT()用来获取ENUM值的数量,FLOOR(RAND() * COUNT())用来生成一个随机的索引,然后通过ELT()函数和子查询获取对应的ENUM值。
4.实战
随机生成分数表的分数,分数在【100,80,60,40】中随机选择
update t_score set score = ELT( FLOOR(RAND() * 4) + 1, '100', '80', '60', '40');
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。
您可能感兴趣的文章:- MySQL数据类型enum 枚举类型
- MySQL中随机排序的几种方法实现
- MySQL rand()函数、rand(n)、生成不重复随机数
- MySQL随机获取一条记录的方法小结
- mysql中插入随机字符串数据及常见问题说明
相关文章
- 原神菈乌玛技能是什么 07-06
- 《和平精英》野牛青春冒险家怎么升级-野牛青春冒险家的升级方法 07-06
- 和平精英陀螺仪怎么玩 07-06
- 《燕云十六声》无相皇BOSS通关攻略 07-06
- 《心动小镇》全粉色泡泡位置介绍 07-06
- 空洞骑士丝之歌育母怎么逃课 07-06