我有一個表格,文字記錄太多。 (例如1000
記錄)每天顯示一個文本
我的表結構類似於下面:
ID | Text
---------------------------------------
1 | My Test Text 1
2 | My Test Text 2
我想顯示每天的紀錄,對此有任何想法?
感謝
我有一個表格,文字記錄太多。 (例如1000
記錄)每天顯示一個文本
我的表結構類似於下面:
ID | Text
---------------------------------------
1 | My Test Text 1
2 | My Test Text 2
我想顯示每天的紀錄,對此有任何想法?
感謝
爲了通過與蘭德今天的日期ORDER BY RAND(CURDATE())
或$date = date('Y-m-d') ;
,然後的種子使用...ORDER BY RAND($date)
謝謝你,你很棒 –
哇。我不知道你可以在'RAND()'裏放一個日期。現在懶得去嘗試一下,但我會聽你的話 - 那是岩石。 – AlienWebguy
是啊,它的方便隨時隨地做事。 – plague
的,你需要在表中添加列在其上的數據已經被插入存儲日期。
,然後你可以寫查詢來獲取數據按日期..
不,因爲我想如果我有20條記錄,從這20條記錄每天顯示一條文字 –
SELECT * FROM my_table ORDER BY RAND() LIMIT 1
這將獲取一個隨機記錄。使用PHP以24小時使用壽命進行緩存。每次加載此頁面時,PHP都應檢查緩存文件和過期時間。如果緩存過期,則進行新查詢,重新緩存。沖洗,重複。
您的唯一選擇是隨機排序並將結果限制爲1,因爲您沒有日期列。
SELECT text FROM yourTable ORDER BY RAND() LIMIT 1
(假設MySQL的)
您可以編寫(或發現),將基於日起僞隨機整數(某種類型非常高的碰撞哈希)函數。用它來SELECT Text WHERE ID = ?
。這樣你就不必存儲任何額外的數據。當然,你將不得不作出米,其中ñ是你最低的ID和米是您最高的ñ在區間震盪的整數。
,因爲你沒有日期,我的建議是使用文本文件中存儲什麼ID是昨天顯示(一些UNTESTED簡單的代碼,讓你開始):
<?php
$tempfile = '/path/to/file/yesterday_id.txt';
list($yesterday_id, $yesterday_date) = explode("\t", file_get_contents($tempfile));
$today = date('Y-m-d');
if($yesterday_date <> $today)
{
$yesterday_id++;
}
$sql = "SELECT * FROM sometable WHERE id = '$yesterday_id'";
$rs = mysql_query($sql);
if($r = mysql_fetch_assoc($rs))
{
echo $r['text'];
file_put_contents($tempfile, "{$yesterday_id}\t{$today}");
}
else
{
echo "text not found.";
}
?>
RAND()函數中定義的方式工作,所以你可以用種子來生成表上的隨機選擇。爲此目的,您可以使用當前日期作爲種子和查詢將看起來像 從Table_Name選擇文本ORDER BY RAND(CURDATE())極限1
呃...是啊...有一個日期與每一行,或者你真的只想在24小時內獲取一次記錄? – bdares
@bdares:看到'i_forget'回答,解決了我的問題,謝謝 –