0

サンプルコードがあります

products(id, name)
1 | Apple
2 | Sony
3 | Nokia
4 | Samsung
5 | LG
6 | Motorola
7 | Ekricson

そしてmysql:

SELECT id, name FROM `products` AS prod 
ORDER BY RAND(prod.id) LIMIT 5

コードを実行したときの結果は次のとおりです。

4 | ...
7 | ...
1 | ...
5 | ...
6 | ...

しかし、次の結果は次のとおりです。

4 | ...
7 | ...
1 | ...
5 | ...
6 | ...

ランダムに実行しても ID が変わらない、修正方法 ix

4

5 に答える 5

7

使用すべきであり、使用ORDER BY RAND()しないでくださいORDER BY RAND(prod.product_id)

RANDマニュアルから:

RAND(), RAND(N)

Returns a random floating-point value v in the range 0 <= v < 1.0.
If a constant integer argument N is specified, it is used as the seed value
which produces a repeatable sequence of column values.
于 2012-06-29T09:21:52.527 に答える
1

関数内の引数RAND(x)はシードであるため、毎回同じ値でシードしています。代わりに、そのままにしておくとRAND()、異なります。

于 2012-06-29T09:21:08.290 に答える
0

SELECT ID, name FROM productsAS prod ORDER BY RAND()LIMIT 5

于 2012-06-29T09:23:36.567 に答える
0

ORDER BY RAND()RAND ORDER BY RAND(prod.id)() に整数引数を指定すると、それがシード値として使用されるため、常に同じ「ランダム」値が返されます。

詳細については、 http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_randを参照してください。

于 2012-06-29T09:23:40.420 に答える
0

次のように使用します。

SELECT id, name FROM `products` AS prod 
ORDER BY RAND() LIMIT 5;

マニュアルはこちら

于 2012-06-29T09:28:18.577 に答える