gpt4 book ai didi

mysql - 无法从 MySQL 表中选择单个随机行

转载 作者:行者123 更新时间:2023-11-29 05:23:48 24 4
gpt4 key购买 nike

我试图从一个非常简单的表中随机选择一个用户来生成示例数据。

该表只有两列,整数主键 users_id 包含从 1 到 46 的所有值,uname 是一个 varchar( 60)

查询

select relusers.uname from relusers where relusers.users_id=floor(rand()*46+1);

正在返回多行。也许我已经盯着这个看太久了,但我看不出上面的查询怎么会返回不止一行。 floor() 返回一个与主键列进行比较的整数。在选择中包括 users_id 显示选择了多个不同的 ID。结果是零行我能理解,但是多行?有什么想法吗?

最佳答案

您的代码返回多行,因为 rand() 是在每一行上计算的。所以,你有多个比赛的变化。并且有可能根本没有匹配项。

您可以使用您的想法,但以这种方式尝试:

select relusers.uname
from relusers cross join
(selext @rand := rand()) const
where relusers.users_id = floor(@rand*46+1);

这只会生成一个随机值,因此只会生成一行。但是,只有 46 行,order by 方法的性能应该足够好:

select relusers.uname
from relusers
order by rand()
limit 1;

关于mysql - 无法从 MySQL 表中选择单个随机行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22622493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com