MySQL 随机 select 没有 return 任何东西

MySQL random select doesn't return anything

我正在尝试制作一个生成随机用户名的应用程序。我有一个简单的 table,只有一个 ID 和一个名称列。基本上:

id name
1 dude
2 chill
... ...

我想从那里 select 3 个随机值。这是我的尝试:

SELECT COUNT(id) INTO @count -- gets the length
FROM username_generator;
 
SELECT name FROM username_generator -- selects 3 names with random IDs
WHERE id IN (
    (FLOOR(RAND() * @COUNT)+1), 
    (FLOOR(RAND() * @COUNT)+1),
    (FLOOR(RAND() * @COUNT)+1)
);

思路是统计长度和select长度范围内的3个ID。

问题是这有时 returns 没什么,我不明白为什么。随机数总是在范围内,我的名字在 table 中。例如:

正常:

不正常:

问题是 ID 范围内可能存在空白。

解决这个问题的最简单方法,实际上也是最简单的解决方案,就是忘记使用计数,只随机选择 3 个名称,如下所示:

select name
from username_generator
order by rand()
limit 3

参见 live demo(刷新演示页面以查看每次查询运行时返回的不同名称)。