这里是一个简单的查询,我正试图对一个更大的连接查询执行一些操作。它还在这么小的范围内破裂。我试图为每一行生成一个随机数,在1-60的范围内。然后我想按这个随机数对返回的行进行排序。
SELECT downloads . * ,
(FLOOR( 1 + ( RAND( ) *60 ) )) AS randomtimer
FROM downloads
ORDER BY randomtimer
LIMIT 25
我有两个数据库我试过这个查询。一个活的和一个开发人员。我把两者并排比较过,它们在结构上都是一样的。它在dev上工作正常。返回由随机计时器排序的行。
live表返回randomtimer列中的所有1。如果我按randomtimer ASC排序,它们将全部变成60秒。如果我从order by子句中删除randomtimer,它将返回正确的单个值。所以有些东西在调整订单上的值。
有人对此有什么想法吗?我可以忽略一些东西吗?世界跆拳道联盟?世界跆拳道联盟?
最佳答案
除了无名先生所说的,还有一个问题。
生成1到60之间的随机数,然后选择前25行。如果有足够多的行(统计上)以随机值1结束,那么前25行在“randomtimer”列中的值当然都是1。
因此,这可能是因为您的生产数据比dev服务器上的数据多得多。