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

如何在MySQL中随机获取两个指定数值中的一个?

解决MySQL中随机选择指定两个值的问题

嘿,我明白你的困扰了——谷歌搜出来的都是生成范围随机数的方法,但你要的是从固定的两个值(429和529)里随机选一个,对吧?你的原语句里用RAND(SELECT 429 UNION SELECT 529)是不对的,因为MySQL的RAND()函数参数是随机种子,不是可选值列表。下面给你两种靠谱的解决方案:

方法一:用子查询+随机排序

这种方法直观易懂,先生成包含两个目标值的临时表,再随机排序取第一个:

INSERT INTO table1(table2_id, status, stage, added_by)
SELECT 
    id, 
    'Pending', 
    'Semifinal', 
    (SELECT val FROM (SELECT 429 AS val UNION SELECT 529) t ORDER BY RAND() LIMIT 1)
FROM table2;

内层的(SELECT 429 AS val UNION SELECT 529)会创建一个只有两行的临时表,ORDER BY RAND()打乱顺序后取第一行,这样每插入一行数据都会随机选中429或529中的一个。

方法二:用ELT()函数(更高效)

如果追求性能,推荐用ELT()结合RAND(),不需要子查询,执行更快:

INSERT INTO table1(table2_id, status, stage, added_by)
SELECT 
    id, 
    'Pending', 
    'Semifinal', 
    ELT(FLOOR(RAND() * 2) + 1, 429, 529)
FROM table2;

原理很简单:FLOOR(RAND() * 2)会生成0或1,加1后变成1或2;ELT(n, val1, val2)函数会返回第n个参数的值,所以当n=1时返回429,n=2时返回529,完美实现随机二选一。

如果你的需求不是随机,而是固定选其中一个值,那直接把added_by的值写死成429或529就行啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:18:40