2012-05-07 8 views
1

私のデータベースに名前があり、コンテストの名前を描きたいと思います。データベースに名前をつける方法

誰でも知っていますか?

ありがとうございます!

+1

テーブルの構造は?何を試しましたか?等。? –

+2

[何を試しましたか?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – Songo

答えて

2
SELECT * FROM table WHERE num_value >= RAND() * (SELECT MAX(num_value) FROM table) LIMIT 1 

を仕事ができます。 1つの注意点:これは、num_valueが0..MAX(num_value)の範囲で等しく分布していることを前提としています。データセットがこの仮定から大きく外れていると、偏った結果が得られます(一部の行は他の行より頻繁に表示されます)。

+1

ありがとう、それは私が必要としていたものです!私は純粋なPHPでそれをしようとしたが、あなたのアイデアははるかに優れています! –

+0

私の喜び先生 –

2

このようなクエリはnum_valueがインデックス化された場合、これは関係なく、テーブルサイズの、一定の時間で動作します

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