1

selectコマンドを使用してSQLテーブルから値を選択しています。テーブルから10個の値を返します。しかし、私は3つの値をランダムに表示したいと思います。

4

4 に答える 4

1
select * from your_table
order by rand()
limit 3
于 2012-08-15T08:20:24.740 に答える
0

大きなテーブルではお勧めできません:

select * from mytable order by rand() limit 3
于 2012-08-15T08:21:04.533 に答える
0

簡単に言えば、小さなテーブルに対して次のようにすることができます。

SELECT * FROM yourTable
ORDER BY RAND()
LIMIT 3;

ただし、大きなテーブルがある場合は、結果セットを使用して選択できますfragmentation....仮に、テーブルに200Kの行が含まれており、100行をランダムに選択するだけでよい場合、結果セットのフラグメントを計算できます.....フラグメント指定されたテーブルの結果セットの数は 0.0005 になり、後で次のように使用できます。

SELECT * FROM yourTable WHERE RAND()<=0.0005

正確に 100 行を取得するには、フラグメントを少し増やして、次のように使用できます。

  SELECT * FROM yourTable WHERE RAND()<=0.0006 LIMIT 100;
于 2012-08-15T08:34:02.083 に答える
0

これを試して:

SELECT * 
FROM tableName
ORDER BY RAND()
LIMIT 3

ただし、この記事に よるとORDER BY RAND()を使用すると、テーブル内のわずか 100 行で最適化されたクエリよりも遅れていることに注意してください。ORDER BY RAND()

この記事では、パフォーマンスに基づいてランダム レコードを生成するさまざまな手法を示します。

于 2012-08-15T09:19:54.967 に答える