2011-03-23 21 views
0

私は、テーブルtable1をmysqlに持っています。条件付きのmysqlランダム

私はそれでこれを実行しています:

SELECT FLOOR(MAX(id) * RAND()) FROM `table1` 

これはうまく動作しますが、私は今「とトム」の条件を追加しようとしています。

ここで、tomは整数フィールドです。

例えば:

id tom 
1 0 
2 3 
3 2 
4 0 
5 0 
6 3 
7 1 
8 1 
9 3 

など

だから、私の質問は、

は、どのように私はこれも満たすトム=、IDからランダムな値を選ぶことができます '0' と言いますか?

答えて

2
SELECT id FROM `table1` WHERE tom = 0 ORDER BY RAND() LIMIT 1 

これは最初それらの結果randomlyを注文し、その後、tom = 0れるすべての行を取得します。 MySQLはそれらの結果を1つに制限し、検索したい単一の値を返します。

0
select * from (
select * from table where tom = 0) as t order by rand() limit 1 
1

私は私が正しく理解願っています:

SELECT id FROM `table1` WHERE tom = 0 order by rand() limit 1 
+0

+1あなたが正しいです。副問合せは不要です。 –

+0

なぜ「RAND()limit 1」で注文するのですか?それはちょうどそれなしで単一の値を返しますか? – David19801

+0

がなければ、tom = 0のすべての値がランダムな順序で返されます。この制限は最初のものを返します。 –