2012-01-08 160 views
17

可能重複:
Selecting Random Rows in MySQL從MySQL表中隨機選擇行

我使用PHP和MySQL創建一個簡單的Web應用程序。在它中,我需要隨機地從表中隨機選擇一小組行。我如何使用MySQL來實現這樣的事情?

+2

請提問之前搜索下。搜索你的問題的確切標題產生[this](http://stackoverflow.com/questions/1283640)和許多其他類似的問題。 – DaveRandom 2012-01-08 17:32:47

+0

[MySQL從600K行中快速選擇10個隨機行](https://stackoverflow.com/q/4329396/6521116) – 2017-06-17 11:10:45

回答

44
SELECT * FROM table ORDER BY RAND() LIMIT 10; 

編輯:

關於MySQL的RAND()函數的有用信息,可以發現here

+0

ouch ...我有> 500M行!這有點慢... – 2015-09-01 18:39:45

+2

還有其他的performant選項,如果你有一個連續的主鍵,用你選擇的語言預先計算一系列ID並做一個SELECT ... WHERE id IN(x)' – 2015-09-01 19:26:25

+0

Query'選擇用戶的count(*);'返回10293453.查詢'SELECT id FROM用戶ORDER BY RAND()限制10;'運行5秒。 – klay 2015-10-12 08:26:50

5
select * from table order by rand() limit 10 

注意order by rand()與大型數據集是非常緩慢的,但在你的情況下,它不是一個問題。

3

你可以使用RAND()函數來做到這一點。

SELECT questine FROM tablename ORDER BY RAND() LIMIT 10 

將隨機選擇10個questines下假設的questine存儲領域questine