【问题标题】:How to draw a name in a database [duplicate]如何在数据库中绘制名称[重复]
【发布时间】:2012-05-15 19:04:45
【问题描述】:

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

有人对此有想法吗?

谢谢!!

【问题讨论】:

标签: php mysql


【解决方案1】:
SELECT * FROM table WHERE num_value >= RAND() * (SELECT MAX(num_value) FROM table) LIMIT 1

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

【讨论】:

  • 谢谢,这正是我需要的!我试图在纯 php 中做到这一点,但你的想法要好得多!
【解决方案2】:

这样的查询可以工作

SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;

【讨论】:

    猜你喜欢
    • 2011-07-30
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多