SELECT * FROM dogs order by rand(dayofyear(CURRENT_DATE)) LIMIT 1
私はデータベースを乱数で注文しているように見えますが、この数は毎日変わります。これが本当であるかどうかを確かめるのに1日かかりますので、これは推測です。
このクエリを変更して、毎日ではなく毎分新しい乱数でデータベースを並べ替えることができますか。私はこれを試しました:
SELECT * FROM dogs order by rand(minuteofhour(CURRENT_DATE)) LIMIT 1
しかしそれは働かなかった:(
御時間ありがとうございます!
回答:
回答№1は4乱数発生器(RNG)は通常、「シード値」、乱数を生成するために使用される値。シード値が常に同じ場合、乱数のシーケンスは常に同じです。これが毎日変わる理由を説明しています。
あなたの問題を解決する最も簡単な方法(毎分に変える)は毎分変わるシード値を見つけることです。良いものになります ROUND(UNIX_TIMESTAMP()/60)
.
SELECT * FROM dogs order by rand(ROUND(UNIX_TIMESTAMP()/60)) LIMIT 1
回答№2の場合は0
私はMySQLが得意ではありません。しかし、あなたはmysqlに関数minuteofhourがあると確信していますか?
クエリのアイデアは、データベースからランダムなレコードを選ぶことです。
あなたはこれを行うことができます: SELECT * FROMから犬の順序でrand(20)LIMIT 1
「1から20までの乱数」の列で並べ替えます
回答№3の場合は0
MySQLの関数MINUTE()とNOW()の組み合わせを使用します。NOWは現在の日付を返し、MINUTEはそれから分の値を抽出します。