我有一个示例代码
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
答案 0 :(得分:7)
您应该使用ORDER BY RAND()
而不是ORDER BY RAND(prod.product_id)
来自RAND manual:
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.
答案 1 :(得分:1)
RAND(x)
函数中的参数是种子,因此每次都使用相同的值为它播种。相反,请将其保留为RAND()
,它会有所不同。
答案 2 :(得分:0)
SELECT id,name FROM products
AS prod
ORDER BY RAND()
LIMIT 5
答案 3 :(得分:0)
你可能只想要ORDER BY RAND()
而不是ORDER BY RAND(prod.id)
- 如果你给RAND()一个整数参数,它就被用作种子值,所以你总是得到相同的“随机”值。
有关详细信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand。
答案 4 :(得分:0)