我有一張表格,裏面有引號排(ID, QUOTE)
,我有一個查詢來獲得隨機報價(ORDER BY RAND() LIMIT 0,1)
。我知道它很慢,但我沒有太多的行。所以現在我想得到一天的報價。它應該是一個隨機引用,但在一天中不可更改。我不想添加新的列,我不想選擇當天的報價。我只是想要一個會得到一個隨機引用的查詢,但以某種方式來說,整天的報價將是相同的,第二天它將返回其他隨機引用。如何做到這一點SQL Palladins?如何獲得當天的隨機行?
回答
使用種子基於當前日期的隨機數生成器:
ORDER BY RAND(20120714) LIMIT 1
我也好奇你說的「其他」在這裏的意思:
和第二天它將返回其他隨機報價。
如果你想每天選擇不同的隨機報價,那麼你不應該使用一個簡單的ORDER BY RAND(seed)
。這可能會連續三天返回相同的報價。
如果您想避免發生這種情況,您可以改爲存儲每天選擇哪種報價,並從過去n天內未使用的報價中選擇隨機報價。當然,如果您在上次使用報價時進行存儲,那麼您的原始問題也有自然的解決方案:
- 查找上次使用的報價。
- 如果有,那就是當天的報價。
- 如果不是,則從過去n天未使用的行中選擇一天中的新報價,並更新該行以顯示它是今天當天的報價。
我不想添加新列
OK,怎麼樣一個稍微不同的方法:
ORDER BY RAND(201207) LIMIT 14, 1
-- yyyymm dd
現在你不需要額外的列,你不會得到重複,除了可能當月改變。此解決方案假定您至少有32個引號可供選擇。
我喜歡1千行,所以它不是一個很大的風險,我有2倍相同的報價。即使它會發生 - 它不是一個biggie。 –
rand(yyymm)的最後一個訂單如何工作?我無法弄清楚...... –
@tomaszs:排序順序將在一個月的每一天都是相同的,每一天它會從列表中選擇下一個(限制偏移量更改)。當它到達下個月時,清單將被重新洗牌。 –
解決此問題可能涉及編寫一個應用程序,該應用程序每天一次選擇您的ID最大值和最小值;從該範圍計算一個隨機數;然後將該編號寫入文件。
負責打印報價的應用程序將根據 存儲在文件中的ID選擇報價。
現在有足夠的語言,如Python,Perl,PHP和其他語言有很好的數據庫接口。 Python也有一個隨機庫。
- 1. 如何使用nhibernate獲得隨機行?
- 2. 如何獲得隨機數
- 3. 如何獲得隨機ID的
- 4. 如何獲得好的隨機結果
- 5. 如何獲得真正的隨機數?
- 6. 如何獲得LogicalTypes的隨機值
- 7. 如何獲得當月的第一天?
- 8. 如何獲得隨機發言
- 9. Android如何獲得隨機sqlite數據?
- 10. HandlebarsJS如何從JSON獲得隨機值
- 11. 如何隨機獲得兩次
- 12. OpenGL C++如何獲得隨機值?
- 13. 如何獲得當年有多少天?
- 14. 如何用awk獲得給定分佈的隨機行?
- 15. 如何獲得內部連接使用MySQL中的隨機行?
- 16. SQL優化來獲得隨機行
- 17. 如何在CakePHP 3.0中獲得一個隨機行?
- 18. Laravel 5如何使用集合獲得許多隨機行
- 19. 從mysql獲得隨機值
- 20. 如何在隨機發生器中獲得50/50的機會
- 21. 獲得隨機「連接是隻讀」 - 春天
- 22. 每天獲得一組「靜態」隨機值
- 23. 無法從隨機類中獲得一個隨機的int值
- 24. 如何獲得隨機種子給予前2個僞隨機數
- 25. SAS如何通過組獲得隨機選擇隨機分成多個組
- 26. 如何獲得隨機數的數組中的Fortran
- 27. 如何獲得隨機的0和1的數字
- 28. 每次獲得不同的隨機值
- 29. RichTextBlock中的圖像隨機獲得
- 30. MySQL的限制1獲得隨機(1,8)
我建議你有一個計劃的任務,將得到一個隨機報價並將其保存到一些文本文件。這項任務每天執行一次。並閱讀此文件的內容,而不是每次要加載當天的報價時對數據庫進行查詢。 – yasar