/ /このmysqlクエリを説明してください。 - mysql

このmysqlクエリを説明してください。 - mysql

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はそれから分の値を抽出します。