关于#MySQL中用rand函数进行随机分组#的问题,请各位专家解答!

原题目,利用rand函数将员工随机分成4组,参加不同的活动
#代码如下
SELECT ename,FLOOR(RAND()*4),
(CASE FLOOR(RAND()*4)
WHEN 1 THEN 'basketball'
WHEN 2 THEN 'football'
WHEN 3 THEN 'pingpong'
ELSE 'runningman'
END)AS 活动项目
FROM emp;

输出图

img

为何我定义的分组不正确呢,求解

只需执行FLOOR(RAND()*4)一次,RAND是随机函数,每次生成的值肯定不相同的。

img

SELECT ename,
(CASE FLOOR(RAND()*4)
WHEN 1 THEN '1-basketball'
WHEN 2 THEN '2-football'
WHEN 3 THEN '3-pingpong'
ELSE '0-runningman'
END)AS 活动项目
FROM emp;

这是正常的。RAND()是随机函数,你查询了几次,就调用了几次随机函数,每一次结果都不太一样。
如果要达到你想要的效果,可以修改如下:

select ename,rand,
(CASE rand
WHEN 1 THEN 'basketball'
WHEN 2 THEN 'football'
WHEN 3 THEN 'pingpong'
ELSE 'runningman'
END)AS 活动项目
(
SELECT ename,FLOOR(RAND()*4) rand
FROM emp) e

img