2010-10-23 200 views
0

我在mysql數據庫的某些表中有大約300條記錄。我有一個要求,用一個查詢獲取40個隨機記錄。如何編寫查詢? 需要幫助 謝謝。如何從MySQL數據庫中獲取隨機數的行?

+1

http://stackoverflow.com/search?q = rand + mysql試試看這些話題。你的答案在那裏 – Tim 2010-10-23 12:01:02

回答

3

對於一張小桌子喜歡你應該用這個就夠了:

SELECT * FROM table ORDER BY RAND() LIMIT 40; 

注意,這是不適合,因爲MySQL的大表將不得不做一個表掃描和秩序的所有表格中的行因使用ORDER BY RAND()。對於大型表格,你將不得不在應用程序代碼中實現這一點,跟蹤你已經擁有哪些行並生成隨機ID來獲取。

2

你應該使用rand()order by這樣的:

SELECT field1, field2 
FROM tableName 
ORDER BY RAND() 
LIMIT 40 
0

請注意,這不是一個快速的解決方案,但它只是300條記錄

工作正常
SELECT [rows] 
FROM [table] 
ORDER BY RAND() 
LIMIT 40 
-2

SELECT * FROM表ORDER BY蘭德()限制40

1

order by rand()可能會導致性能問題,而不是嘗試按以下方式:

// what NOT to do: 
$r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1"); 

// much better: 

$r = mysql_query("SELECT count(*) FROM user"); 
$d = mysql_fetch_row($r); 
$rand = mt_rand(0,$d[0] - 1); 

    $r = mysql_query("SELECT username FROM user LIMIT $rand, 1");  
0

你應該用戶RAND()WHERE子句中

,但你首先要在表中的行片段40 /數

例如:

SELECT * FROM [TABLE_NAME] WHERE RAND()< 0.0005; 
相關問題