3
SELECT * FROM dogs order by rand(dayofyear(CURRENT_DATE)) LIMIT 1

データベースを乱数で並べ替えているように見えますが、この番号は毎日変わります。これが本当かどうかを確認するのに1日かかるので、これは推測です。

このクエリを変更して、データベースを毎日ではなく毎分新しい乱数で並べ替えるにはどうすればよいですか?私はこれを試しました:

SELECT * FROM dogs order by rand(minuteofhour(CURRENT_DATE)) LIMIT 1

しかし、それは機能しませんでした:(

御時間ありがとうございます!

4

3 に答える 3

4

乱数ジェネレーター(RNG)には通常、「シード値」が必要です。これは、乱数を生成するために使用される値です。シード値が常に同じである場合、乱数のシーケンスは常に同じです。これは、それが毎日変わる理由を説明しています。

問題を解決する(毎分に変更する)最も簡単な方法は、毎分変化するシード値を見つけることです。良いものはですROUND(UNIX_TIMESTAMP()/60)

SELECT * FROM dogs order by rand(ROUND(UNIX_TIMESTAMP()/60)) LIMIT 1
于 2013-03-11T00:51:20.977 に答える
0

私はmysqlが得意ではありません。しかし、mysqlにminuteofhour関数があるのは確かですか?

クエリの考え方は、データベースからランダムなレコードを選択することです。

これは次の方法で実行できます。SELECT*FROMdogs order by rand(20)LIMIT 1

「1〜20の乱数」の列順に並べ替えます

于 2013-03-11T00:57:13.757 に答える
0

MySQLの関数MINUTE()とNOW()の組み合わせを使用します。NOWは現在の日付を返し、MINUTEはそこから分の値を抽出します。

于 2013-03-11T10:00:20.703 に答える