Mysql 如何添加多个列并显示最大值?

Mysql 如何添加多个列并显示最大值?,mysql,Mysql,在下面的代码中,我从等级表中添加了Fanbase、coach、TeamRanks、Organization和Kicker。它返回每行的总和作为总计。但是,我不确定如何显示total的最大值。我不需要添加的全部列表 Select ID, (Fanbase + Coach + TeamRanks + Organization + Kicker) as total, Fanbase, Coach, TeamRanks, Organization, Kicker fro

在下面的代码中,我从等级表中添加了Fanbase、coach、TeamRanks、Organization和Kicker。它返回每行的总和作为总计。但是,我不确定如何显示total的最大值。我不需要添加的全部列表

Select
  ID, 
  (Fanbase + Coach + TeamRanks + Organization + Kicker) as total,
  Fanbase, 
  Coach, 
  TeamRanks,
  Organization,
  Kicker
from Ranks;
这将返回每列的总计,但我需要总计的最大值

Team     Fanbase    Coach    TeamRanks    Organization     Kicker


Chargers  80         60       29           18               10
Patriots  100       100       32           32               20
RAMS      80        90        30           25               23
使用
MAX()
函数聚合列。例如:

Select
  MAX(Fanbase + Coach + TeamRanks + Organization + Kicker) as max_total
from Ranks;
编辑:要获取具有
max\u total
值的团队数据,您可以执行以下操作:

Select
  ID, 
  (Fanbase + Coach + TeamRanks + Organization + Kicker) as total,
  Fanbase, 
  Coach, 
  TeamRanks,
  Organization,
  Kicker
from Ranks
where Fanbase + Coach + TeamRanks + Organization + Kicker = (
  Select
    MAX(Fanbase + Coach + TeamRanks + Organization + Kicker) as max_total
  from Ranks
)

如果有多个团队,此查询将返回第一位置的所有团队。

最快的方法是(在不从原始查询中派生太多的情况下),您可以使用
ORDER BY DESC
LIMIT

-- Assuming that ID=teamname
SELECT ID FROM
(SELECT
  ID, 
  (Fanbase + Coach + TeamRanks + Organization + Kicker) AS total
FROM Ranks ORDER BY total DESC LIMIT 1) r;
更新:我想到了一个查询,但我担心它在某些MySQL版本中可能不起作用,但刚才我有时间尝试一下,它似乎在MySQL 5.5、5.6、5.7和8.0上运行良好。此查询要短得多,并且不使用子查询:

SELECT ID
FROM ranks 
ORDER BY  (Fanbase + Coach + TeamRanks + Organization + Kicker) DESC 
LIMIT 1;
我还想指出,如果其中一列包含所有团队的空值;例如,如果所有的
Kicker
值都为空,则此查询似乎不起作用。我已经检查了数学公式,如果(Fanbase+Coach+TeamRanks+Organization+Kicker)=(10+10+20+30+NULL),它将返回NULL而不是70。您可以添加类似于
IFNULL(字段,0)
的函数。比如说,

SELECT ID
FROM ranks 
ORDER BY (IFNULL(Fanbase,0)+IFNULL(Coach,0)+IFNULL(TeamRanks,0)+IFNULL(Organization,0)+IFNULL(Kicker,0)) DESC 
LIMIT 1;

但是,最好的方法当然是将字段设置为默认值
0
不为NULL
。这里我只关心
如果

我对MySQL非常陌生。对于这个项目,我试图显示代码解决它的最大值,但是我也试图用这个最大值显示团队名称。我试过这个,但它抱怨组使用无效。从以下位置选择团队(Max(粉丝群+教练+团队+组织+踢球者));我看到下面的代码同时显示了Max value和team,但我只需要team name而不是Max value。选择最大团队(粉丝群+教练+团队队伍+组织+踢球者)作为队伍中的最大总人数@我很乐意帮忙。你能提供一些样本数据和预期结果吗?几行文字将有助于理解您的确切需求。谢谢您的帮助。我有下表。我正在尝试添加Fanbase、Coach、TeamRanks和Organization,并返回与团队相关的最大值。例如,在下表中,我想添加Fanbase、Coach、TeamRanks和Organization值,并返回具有最大值的团队名称。如果爱国者具有最大值(Fanbase+教练+组队+组织),则显示爱国者,其他显示具有最大值的任何其他团队。@刺穿者两个代码都正确返回了与(Fanbase+教练+组队+组织+踢球者)的最大值关联的行。但是,我希望查询只显示团队名称,而不是与该团队关联的整行信息。这段代码正确地显示了团队、总数、粉丝群、教练、团队等级、组织和踢球者的值,但我只想显示团队名称。@如果是这样,请将其作为子查询-在我的答案中更新。。)谢谢你们!我真的很感激。查询正在返回我想要的内容。