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(刷新演示页面以查看每次查询运行时返回的不同名称)。
我正在尝试制作一个生成随机用户名的应用程序。我有一个简单的 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(刷新演示页面以查看每次查询运行时返回的不同名称)。