從一個表中隨機選擇記錄;我必須始終在PHP中設置一個臨時變量嗎?我需要一些幫助來選擇CodeIgniter模型中的隨機行,然後在每次查看我的主頁時在視圖中顯示三個不同的行。有沒有人有任何想法如何解決這個問題?提前致謝!用MySQL隨機選擇行
1
A
回答
2
我有這段代碼在生產中得到一個隨機報價。使用MySQL的RAND函數非常慢。即使在數據庫中有100個引號,我也注意到網站上的延遲時間。有了這個,就沒有任何滯後。
$result = mysql_query('SELECT COUNT(*) FROM quotes');
$count = mysql_fetch_row($result);
$id = rand(1, $count[0]);
$result = mysql_query("SELECT author, quote FROM quotes WHERE id=$id");
4
我會做這樣的事情:
SELECT * FROM table ORDER BY RAND() LIMIT 1;
這將使數據以隨機順序,然後從該隨機順序只返回第一行。
5
如果你沒有一噸的行,你可以簡單地說:
SELECT * FROM myTable ORDER BY RAND() LIMIT 3;
如果你有很多行,這會很慢,但對於較小的數據集它會正常工作。
正如Steve Michel在他的回答中提到的,這種方法對於大型表格可能會變得非常難看。他的建議是一個跳脫的好地方。如果你知道餐桌上的近似最大整數PK,你可以這樣做產生一個和你最大的PK值之間的隨機數,然後抓住隨機排一個在類似時間:
$q="SELECT * FROM table WHERE id >= {$myRandomValue}";
$row = $db->fetchOne($q); //or whatever CI's interface to grab a single is like
當然,如果你需要3個隨機行,你會在這裏有三個查詢,但是因爲它們完全在PK上,它們會很快(而不是隨機化整個表)。
2
,你需要這樣的查詢:
SELECT *
FROM tablename
WHERE somefield='something'
ORDER BY RAND() LIMIT 3
它是從 http://www.google.com/search?q=mysql+random 第二個結果採取的,它應該工作;)
2
排序方式蘭特(大表)可以很如果桌子非常大,很貴。 MySQL需要構建一個臨時表並對其進行排序。如果您有主鍵,並且您知道表中有多少行,請使用LIMIT x,1獲取一個隨機行,其中x是您想要獲取的行的編號。
相關問題
- 1. 使用MySQL選擇隨機行
- 2. 選擇隨機行
- 3. PHP MySQL的隨機選擇行
- 4. 選擇存在於MySQL的隨機行
- 5. 在MySQL中選擇隨機行
- 6. MySQL - 從大表中選擇隨機行
- 7. 從MySQL表中隨機選擇行
- 8. MYSQL從兩行中隨機選擇
- 9. MySQL的選擇隨機
- 10. SAS/SQL隨機選擇隨機行
- 11. JPA:選擇隨機行
- 12. 選擇隨機行mysqli
- 13. 選擇隨機
- 14. 隨機選擇
- 15. 隨機選擇
- 16. 隨機選擇
- 17. MySQL從300行快速選擇20行隨機行
- 18. 從SQL選擇隨機行使用PHP
- 19. 選擇記錄條件隨機#MySQL
- 20. MySql隨機類別限制選擇
- 21. 選擇隨機結果從MySQL
- 22. mysql + php:選擇多個隨機結果
- 23. MySQL加入並選擇隨機字段
- 24. 如何mysql隨機選擇表名
- 25. MySQL選擇隨機X條目 - 優化
- 26. 如何從mysql表中隨機選擇或隨機播放它?
- 27. mysql隨機行
- 28. MYSQL隨機選擇唯一行 - 不包括先前選擇的行
- 29. 如何從MySQL中隨機選擇行進行分頁?
- 30. 選擇隨機用戶sql