gpt4 book ai didi

mysql - SQL:将多列合二为一进行排序(只输出)

转载 作者:可可西里 更新时间:2023-11-01 07:49:43 24 4
gpt4 key购买 nike

我有这样一个数据库:

|--------------------------------------------------------------------------|
| NAME | SCORE1 | SCORE2 | SCORE3 | SCORE4 | RATING |
|--------------------------------------------------------------------------|
| Joe Bloggs | -50 | 0 | -10 | -30 | 67 |
| Bob Bobbing | -30 | -10 | 0 | -10 | 74 |
| Marjorie Doors | 0 | -10 | -30 | -50 | 88 |
| etc... ------------------------------------------------------------------|

我想做的是为任何给定的分数位置找到评分最高的名字。

当只有一个得分位置时,我做得很好:

SELECT name FROM db ORDER BY Score2 DESC, Rating DESC LIMIT 1

...给我 Score2 得分最高的人。


我现在需要的是找到一种方法来组合两个或更多分数列(总共有 23 个),但仍然返回给定任何分数组合的评分最高的人。

例如,如果我想要 Score2 或 Score3 评分最高的人,执行上述查询会得到 Joe Bloggs,即使他的评分低于 Bob Bobbing。

同样,如果我想要 Score1 OR Score2 OR Score4 评分最高的人,我仍然需要首先指定其中一个分数作为排序依据。我需要一种方法来组合指定的所有 X 列的结果,然后按组合分数“列”排序,然后按评级排序。

最佳答案

您可能想要使用 GREATEST()功能:

With two or more arguments, returns the largest (maximum-valued) argument.

此代码片段对示例中的 score2 和 score3 列执行您想要的操作:

SELECT name, GREATEST( score2, score3 ) AS max_score, rating
FROM db
ORDER BY max_score DESC , rating DESC

按组合分数排序,如果它们相等则按结果排序(从高到低)。

对于更多列,只需将它们作为参数添加到 GREATEST() 函数即可。

关于mysql - SQL:将多列合二为一进行排序(只输出),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21092897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com