【问题标题】:Multiple MAX() functions with different condition for each多个 MAX() 函数,每个函数具有不同的条件
【发布时间】:2014-07-06 23:14:40
【问题描述】:

如何在满足条件时选择多个 MAX()。

解释我需要做什么的伪代码

SELECT
  MAX(level, WHERE strength >= 100) m1,
  MAX(level, WHERE strength < 100) m2 
FROM players
WHERE premium_account = 1 

我需要子查询,还是有地方可以使用CASE WHEN? 我不想将其拆分为单独的查询,因为我的“主”查询过滤了很多不必要的行并将搜索限制在整个表的一小部分。

表非常大,大约有 13M 行,占用 6GB 磁盘空间。

【问题讨论】:

    标签: mysql sql database performance


    【解决方案1】:

    MAX 中使用CASE

    SELECT
        MAX(CASE WHEN strength >= 100 THEN level END) m1,
        MAX(CASE WHEN strength < 100 THEN level END) m2
    FROM players
    WHERE premium_account = 1 
    

    【讨论】:

      【解决方案2】:

      你可以的

      MAX(IF(strength >= 100, level, 0))
      

      如有必要,用较小的数字替换 0。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-14
        • 1970-01-01
        • 2022-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-14
        相关资源
        最近更新 更多