为什么选择查询中的SQL RAND()返回的值比我想要的小?

韦利西奥

我已经使用过这行代码很多次了,它从未给我ID(主键)大于50的行。我在测试表中有134行。我的目标是生成范围从0到134.我知道SELECT ROUND( RAND()* 134)LIMIT 1可得出完美结果。就我而言,这不能给我一个完美的结果

SELECT * FROM `test` WHERE `ID` > (SELECT RAND()*134) LIMIT 1;
他们不是

看来您需要:

SELECT test.*
FROM test
CROSS JOIN (SELECT ROUND(RAND()*134) random) rnd
WHERE test.id = rnd.random;

小提琴

子查询将在范围内生成一个随机值,并id选择具有该的行


为什么查询无法按需工作?

SELECT * FROM `test` WHERE `ID` > (SELECT RAND()*134) LIMIT 1;

该表有134行。对于每一行,都会生成一个独立的随机数(即,每一行现在都有自己的独立随机值)。然后id将每一行的值与为此行生成的随机数进行比较。当然id,匹配的可能性越低,则匹配的可能性就越大。这是第一个逻辑错误。然后LIMIT 1获取所有匹配的行,并从所有匹配的行中返回一个不确定(随机)行。这是查询的第二个逻辑错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

.closest与:包含比我想要的更多的选择?

在选择查询中使用反引号时,为什么SQL查询返回表数据?

为什么我的 SQL 选择查询只返回一行?

为什么我在 PHP 中的 SQL 查询失败?

为什么我无法从 SQL 查询中获取价值?

为什么选择查询返回数据作为元组,我需要在 python 中关联数组

为什么我不能从外部查询的子查询中访问定义为“选择 1”的字段?

阻止MS Word选择比我想要的更多的东西

有什么理由输出比我想要的更高的数量吗?

为什么我的SQL查询没有从sqllite数据库中选择任何行

SQL Server 2012:为什么where子句中的不同值将阻止选择查询?

当我在脚本中运行程序时,为什么rand()返回相同的值?

为什么选择查询在 Athena 中返回所有带有文件数据的表数据

为什么选择单个属性返回的行少于选择Oracle SQL中的所有列的行

为什么我的动态查询在 SQL 服务器中返回 NUL 而不是 NULL?

为什么我的SQL Union查询返回的值与手动SELECT WHERE查询不同?

为什么我的查询中的 AND 子句被忽略(非常简单的 SQL 查询)

为什么 SQL 查询返回 0?实际的查询是什么?

为什么我的结果是0,我想要返回值作为结果?

为什么尾随零和前导零会导致我的函数返回我不想要的值?

为什么我的带有聚合函数的SQL查询在较大的查询中运行时会向我返回错误的值?

为什么选择查询中where子句自动递增ID匹配“ true”的查询返回第一行?

为什么我的SQL查询这么慢?

为什么我的SQL查询失败?

为什么我的linq to sql查询失败?

为什么我在 SQL 查询中出错?

SQL查询不返回我想要的东西

sql中的“转义查询值”如何安全?(或者为什么危险?)【SQL注入】

SQL - 为什么我的查询返回所有可能的排列?