在php中使用随机mysql不能随机id?

时间:2012-06-29 09:17:42

标签: php mysql

我有一个示例代码

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

5 个答案:

答案 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)

使用这种方式:

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

请参阅手册here