1

我有一个包含评级项目的数据库。当我想显示来自特定类别的所有项目并按比率而不是按喜欢的数量对结果进行排序时,这很容易并且可以正常工作:

$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";

有人可以帮助我吗?我被困住了。

4

1 回答 1

4

You should turn it around:

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

That way it sorts by rate, then like and finally random if rate and like are equal.

Also your original ORDER BY with RAND() doesn't work because you use two ORDER BY clauses.

于 2013-06-15T20:35:15.750 回答