2012-08-15 15 views
1

我使用select命令從sql表中選擇值。它從表中返回10個值。但我想隨機顯示3個值通過SQL顯示有限的隨機行

+0

大家都在推薦'rand by()'命令。如果你有一張小桌子,這很好,但如果你有很多數據,速度會很慢。如果它對你來說太慢,請參閱我的答案這裏的替代品:http://stackoverflow.com/questions/10677767/fastest-random-selection-where-column-x-is-y-ullull62677869#10677869 – Spudley 2012-08-15 17:58:15

回答

1
select * from your_table 
order by rand() 
limit 3 
+0

'如果你有一個大表,rand()的順序會很慢。 – Spudley 2012-08-15 17:55:05

0

不上大表是一個好主意:

select * from mytable order by rand() limit 3 
0

簡單地說,你可以像這樣的小表:

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

但是,如果你有大的表,那麼你就可以選擇使用結果集的fragmentation ....假設你的表包含200K行,並且你只需要隨機選擇100行,那麼你就可以計算結果集的片段.....給定表結果集的片斷將會l條0.0005後來可以這樣使用:

SELECT * FROM yourTable WHERE RAND()<=0.0005 

要得到完全100行,你可以增加片段一點點,可以使用這樣的:

SELECT * FROM yourTable WHERE RAND()<=0.0006 LIMIT 100; 
0

試試這個:

SELECT * 
FROM tableName 
ORDER BY RAND() 
LIMIT 3 

但要注意,使用ORDER BY RAND()according to this articleORDER BY RAND()已經落後於表格中只有100行的優化查詢。

This article顯示了在性能基礎上生成隨機記錄的不同技術。