【问题标题】:MySQL - Specialized Order By?MySQL - 专门订购?
【发布时间】:2010-07-07 23:16:22
【问题描述】:

有没有办法为 ORDER BY 或某种自定义逻辑指定排序过程?我需要的是检查正在排序的列的一些其他数据,这些数据也在行中。例如,如果一列的值高于另一列,但不满足某个条件,则将其排序为较低。现在我提取列中的所有数据,在 PHP 中使用 usort() 对其进行排序,然后对其进行分页,但这是一个非常糟糕的性能猪。我真的很想把它移到 MySQL 中,这可能吗?如果是这样,怎么做? :P

提前致谢!

here 网站上的问题示例 - 记录按胜率排序,但玩过 1 场比赛的玩家以 100% 的胜率排名第一。我想为游戏设置一个阈值,然后将它们排序较低,即使它们的胜率更高。

【问题讨论】:

  • 发布您的一些数据库架构。我不认为 ORDER BY FIELD() 会在这里工作,因为听起来你有额外的逻辑。

标签: php mysql sql-order-by


【解决方案1】:

您可以按多个表达式排序:

ORDER BY games_played < 10, wins / losses DESC

第一个表达式将所有参加过 10 场或更多场比赛的玩家排在所有参加过少于 10 场比赛的玩家之上。第二个表达式按赢/输比率排序。第二个表达式仅用于对与第一个表达式相等的行进行平局。这意味着玩过 10 场比赛的玩家总是会出现在只玩过 9 场比赛的玩家之上,无论他们的胜负比如何。

【讨论】:

  • 甜,这就像一个魅力!并且尴尬地甚至不需要任何逻辑.. ^^ 非常感谢!
猜你喜欢
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多