Mysql:随机排序,而不是按特定列排序

时间:2013-06-15 20:31:05

标签: php mysql sorting random

我有一个包含评级项目的数据库。当我想要显示特定类别中的所有项目并按比率对结果进行排序时,它很容易且有效:

$query =  "SELECT * FROM infos WHERE category = '".$categories."'";
$query .= "ORDER BY `rate` DESC, `like` DESC";

问题是当结果具有相同的值时,它们按字母顺序显示。所以,我想在按照速率和类似的方式对数据库进行排序之前对数据库进行随机化。我只是想让所有项目和具有相同价值的项目同样的机会不能按字母顺序排列。

我尝试了这个,但它不起作用:

$query =  "SELECT * FROM infos WHERE category = '".$categories."'";
$query .= "ORDER BY RAND(), ORDER BY `rate` DESC, `like` DESC";

有人能帮助我吗?我被卡住了。

1 个答案:

答案 0 :(得分:4)

你应该把它转过来:

SELECT * FROM infos WHERE category=...
ORDER BY rate DESC, like DESC, RAND();

这种方式按费率排序,然后如果费率等相等则最终随机。

你的原始ORDER BY与RAND()也不起作用,因为你使用了两个ORDER BY子句。