MySQL UPDATE设置79-80随机数失效问题求助
问题解决:生成79-80之间的随机数SQL语句修正
你的原语句存在逻辑错误,导致生成的数值范围完全不符合预期:
UPDATE tableName SET columnName = FLOOR( 79 + RAND( ) *80 );
这段代码会生成79到158之间的整数——因为RAND()返回01(不含1)的浮点数,乘以80后是080(不含80),加79得到79~159(不含159),FLOOR()取整后就是79到158的整数,和你要的79-80范围完全不匹配。
正确写法分两种场景:
场景1:生成79到80之间的浮点数(如79.23、79.99等)
不需要FLOOR(),直接用:UPDATE tableName SET columnName = 79 + RAND();注:
RAND()返回01(不含1),所以结果是7980(不含80)的浮点数,若需包含80,可改为79 + RAND() * 1.0000001(避免因精度问题取不到80)。场景2:仅随机生成79或80两个整数
用FLOOR()控制只取0或1,再加79:UPDATE tableName SET columnName = 79 + FLOOR(RAND() * 2);解释:
RAND()*2生成0~2(不含2)的浮点数,FLOOR()后得到0或1,加79正好是79或80。
额外排查点:
- 确认
tableName和columnName拼写正确,列的数据类型为数值型(INT、FLOAT、DECIMAL等) - 执行语句后查看影响行数,若为0,要么无匹配记录,要么无更新权限
- 若使用非MySQL数据库,
RAND()函数可能有差异:比如SQL Server仍用RAND(),Oracle需用DBMS_RANDOM.VALUE(79,80)
内容的提问来源于stack exchange,提问作者FIFA PRODUCE
相关产品推荐
相关产品推荐

