【问题标题】:PHP/Mysql Order by and Rand()PHP/Mysql Order by and Rand()
【发布时间】:2014-10-13 10:35:43
【问题描述】:

如何编写一个按点 Desc 和 rand() 排序的 mysql 查询。

查询

SELECT * FROM users ORDER BY points DESC

我也想根据最高点和随机对数据进行排序。我正在制作排行榜。如果两个人只是为了区别而有相同的点,我想洗牌。另一种解决方案是什么。

【问题讨论】:

  • 我只是根据结果读取了 rand() 的查询速度慢了一些,我们可以使用 shuffle()

标签: php mysql


【解决方案1】:

您可以给每个结果一个随机数,并首先按点 DESC 对结果进行排序,然后按随机值排序:

SELECT *, RAND() random FROM users ORDER BY points DESC, random ASC

可能还有解决方案:

SELECT * FROM users ORDER BY points DESC, RAND()

但我不确定那个。

【讨论】:

  • SELECT * FROM users ORDER BY points DESC,RAND() 也在工作,第一个是在我的脑海中产生疑问,复杂性明智。谢谢
  • @TiMESPLiNTER Dear SELECT * FROM users ORDER BY points DESC, RAND() 这不起作用。因为只有我们可以按一个顺序对数据进行排序。你只能使用 RAND() 或基于 desc 不能同时使用
  • 此查询有效 SELECT * FROM users ORDER BY points DESC, RAND()
【解决方案2】:

亲爱的 SELECT * FROM users ORDER BY points DESC, RAND() 这不起作用。因为只有我们可以按一个顺序对数据进行排序。你只能使用 RAND() 或基于 desc 不能同时使用

@timeSpinter 提供的查询是对的,您可以使用一个条件来排序数据。

喜欢

SELECT * FROM users ORDER BY RAND()

SELECT * FROM users ORDER BY DESC

【讨论】:

  • “我们可以按一个顺序对数据进行排序”。从技术上讲,我们可以按许多顺序对数据进行排序,但只能按一个方向
  • @Irfan,此查询正在运行 SELECT * FROM users ORDER BY points DESC, RAND()
  • @roger 查看结果,每次刷新时结果集是否不同??
猜你喜欢
  • 2012-12-28
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 2011-02-09
相关资源
最近更新 更多