Random 我可以订购随机结果吗?

Random 我可以订购随机结果吗?,random,Random,我想从一个表中随机抽取3条记录,然后将它们排序到“赞助商排名”字段 我的代码是 $sql = "SELECT * FROM $TableSponsors ORDER BY RAND(), sponsor_ranking asc LIMIT 3"; 但它不是按照“赞助商排名”的顺序排列结果,而是将结果随机化 有什么建议吗 谢谢。当然,只有在每个记录都有相同的RAND()值的情况下,按赞助商排名排序才有用,这是不太可能的 你可以这样解决它。按随机顺序,最多3次,按赞助商排名再次排序 SELECT

我想从一个表中随机抽取3条记录,然后将它们排序到“赞助商排名”字段

我的代码是

 $sql = "SELECT * FROM $TableSponsors ORDER BY RAND(), sponsor_ranking asc LIMIT 3";
但它不是按照“赞助商排名”的顺序排列结果,而是将结果随机化

有什么建议吗


谢谢。

当然,只有在每个记录都有相同的
RAND()
值的情况下,按
赞助商排名排序才有用,这是不太可能的

你可以这样解决它。按随机顺序,最多3次,按赞助商排名再次排序

SELECT * FROM 
  (SELECT * FROM $TableSponsors 
  ORDER BY RAND()
  LIMIT 3) x
ORDER BY
  sponsor_ranking

您可以在for子句中创建子表:

$sql = "SELECT * FROM (SELECT * FROM $TableSponsors ORDER BY RAND() LIMIT 3) Faketable ORDER BY sponsor_ranking";

这是行不通的。对多个字段执行“排序依据”
,需要考虑第二个和后续字段的“较早”字段具有相同的值

您必须使用子查询进行rand()排序,然后按照父查询中的其他字段进行排序:

SELECT *
FROM (
    SELECT *
    FROM $TableSponsors
    ORDER BY RAND()
) as foo
ORDER BY sponsor_ranking
LIMIT 3
e、 g.如果您的桌子上有:

x  y
1  5
1  6
2  7
3  8
4  9

... ORDER BY x DESC, y ASC
然后你会得到

x  y
4  9  // only one "4", so 9 is ignored, no point in sorting a single value
3  8  // only one "3", so 8 is ignored, no point in sorting a single value
2  7  // ditto
1  5  // hey, there's two "1" values, so now the second field **IS** sorted
1  6

我认为这个答案是错误的。兰德公司的订单现在什么也做不了。您只需按赞助商排名排序即可获得前3名。