【问题标题】:php/mysql multiple order byphp/mysql 多重排序
【发布时间】:2016-08-10 09:06:50
【问题描述】:

我现在正在处理结果表,我想按点数(顶部最高)对表进行排序,如果点数相等,我想按目标差排序,然后如果目标差相等我想按进球数排序。

所以一个表可能看起来像这样,

+--------+--------+----------+-----------------+--------+
|  Team  | Scored | Conceded | Goal Difference | Points |
+--------+--------+----------+-----------------+--------+
| Team A |     20 |       10 | +10             |     15 |
| Team B |     20 |       15 | +5              |     15 |
| Team C |     10 |       10 | 0               |      9 |
| Team D |      5 |       5  | 0               |      9 |
+--------+--------+----------+-----------------+--------+

因此,A 队赢得联赛冠军是因为它的净胜球比 B 队大,C 队的成绩高于 D 队,因为他们进了更多的球,其他所有条件都相同。

在mysql中可以这样排序,还是需要用PHP解析结果?

【问题讨论】:

标签: php mysql


【解决方案1】:

猜猜看,您可以将多个列名传递给 ORDER BY

SELECT * FROM mytable ORDER BY Points DESC, `Goal Difference` DESC, Scored DESC 

你没有给出你的表结构,但正如jpg指出的,如果这些字段不是数字,ORDER by field_name + 0 可能更合适

【讨论】:

  • 你忘记了积分 ;)
  • 如果Goal Difference 可能是charvarchar`Goal Difference` + 0 会更好。 :-D
  • 同意@JPG,但你知道这些西方最快的答案是如何射击的,稍后编辑 :) 但还有其他几个需要射击 :)
【解决方案2】:

您可以使用查询来执行此操作

SELECT * from `your_table` ORDER BY points DESC, goal_difference DESC, scored DESC

【讨论】:

    【解决方案3】:

    您可以同时按多列排序。

    SELECT some_cols
    FROM table
    WHERE (some conditions)
    ORDER BY col1 DESC, col2, col3;
    

    【讨论】:

      猜你喜欢
      • 2015-06-26
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      相关资源
      最近更新 更多