1

我的数据库中有名字,我想为比赛画一个名字。

有人对此有想法吗?

谢谢 !!

4

2 回答 2

2

像这样的查询可以工作

SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;
于 2012-05-07T08:58:37.337 回答
2
SELECT * FROM table WHERE num_value >= RAND() * (SELECT MAX(num_value) FROM table) LIMIT 1

如果对 num_value 进行了索引,则无论表大小如何,这都会在恒定时间内起作用。一个警告:这假设 num_value 在 0..MAX(num_value) 范围内均匀分布。如果您的数据集严重偏离此假设,您将得到偏斜的结果(某些行会比其他行更频繁地出现)。

于 2012-05-07T08:59:48.867 回答