【问题标题】:How to use ORDER BY and comparing more than 2 columns如何使用 ORDER BY 并比较超过 2 列
【发布时间】:2014-03-04 19:51:24
【问题描述】:

所以我在使用 SQL 查询时遇到了一些问题,或者我决定是否可以在 PHP While 循环中更快地解决这个问题。看我有一张4支球队的小桌子,每支球队将根据每支球队在GOLF、FOOTBALL和Miniature GOLF中的总分分配一个排名。不同比赛的得分:8分给第一名,然后6->4->2分给其他球队,具体取决于每场比赛的得分。然后我将总分转换为排名数。这是一个例子:

我的问题和我的问题是: 我不希望两支球队分享排名。如您所见,team_id 3 和 2 的总分相同,因此它们一起排在第 3 位。我想在所有比赛中价值最高的球队之后订购这张桌子。所以!第 2 队在其中一场比赛中得到 8 分,高于第 3 队的最高分。所以 rank_13 应该是这样的:

我尝试进行查询以比较具有相同 rank_12 点的两个团队,但我不知道如何在 3 列上进行比较。还尝试在 PHP 中打印出第一个表格,然后根据 3 列中的最高值更改显示的值,这更加令人困惑。我不清楚吗?请给我评论。

【问题讨论】:

  • 您可以按 rank_12,{another_col} 的顺序进行多个排序...但在您的情况下,如果排名相同,您需要决定使用哪一列进行排序。跨度>
  • 您可以按rank_12 asc、golf_points desc、football_points desc、mini_points desc进行排序
  • 试试order by rank_12,max(col1,col2,col3)
  • team_id、game_id、积分

标签: php mysql sql sql-order-by


【解决方案1】:

您可以尝试订购以逗号分隔的几列,并使用 GREATEST() 查找最大点并像这样进行比较

......order by rank_12 ASC,GREATEST(golf_points,football_points,mini_points)DESC

【讨论】:

  • 不,我不明白这一点:检查与您的 MySQL 服务器版本相对应的手册,以了解在 'football_points,mini_points. Max函数中有多个值
  • 现在看来它确实有效,在我标记它之前我会做更多的测试,谢谢你:)
猜你喜欢
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多