【问题标题】:Does MySQL maintain the order of the table you are queryingMySQL 是否维护您正在查询的表的顺序
【发布时间】:2012-11-11 06:04:48
【问题描述】:

我正在使用 MySQL,并且我有一个保存玩家分数的表,单个玩家可以记录多个分数。我正在尝试找到使用 MySQL ORDER BY 关键字对玩家进行排名的最佳方式。

我现在正在做的是:

SELECT DISTINCT t.userName FROM (SELECT userName, score FROM scoreTable ORDER BY score DESC) t;

为了使用它对其进行排名,我假设子查询的顺序由主查询维护。

这个假设正确吗?到目前为止,我所有的测试都正确地维护了订单。有没有不工作的情况?

【问题讨论】:

  • 我认为不会有问题。还有一件事,如果您使用查询“SELECT DISTINCT(userName) FROM scoreTable ORDER BY score DESC”,那么就不会有问题了。为什么您在上面使用子查询
  • 如果我使用您建议的查询,它似乎会采用每个用户名的第一个实例并使用该分数进行排序。

标签: mysql sql-order-by distinct ranking


【解决方案1】:

以下内容对你有用吗?

SELECT userName, MAX(score) AS max_score 
FROM scoreTable GROUP BY username 
ORDER BY max_score DESC

【讨论】:

    【解决方案2】:

    我不认为这是有保证的行为,但通常是的。如果您希望以这种方式排序最终结果,那么在外部查询中使用 ORDER BY 可能会更好。

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多