如何在满足条件时选择多个MAX()。
伪代码解释了我需要做什么
SELECT
MAX(level, WHERE strength >= 100) m1,
MAX(level, WHERE strength < 100) m2
FROM players
WHERE premium_account = 1
我需要子查询,还是有地方可以使用CASE WHEN
?
我不想将它拆分成单独的查询,因为我的“主”查询过滤了许多不必要的行,并将搜索限制为整个表的小子集。
该表非常大,拥有大约13M的行并占用6GB的磁盘空间。
答案 0 :(得分:3)
在CASE
MAX
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
答案 1 :(得分:2)
你可以做到
MAX(IF(strength >= 100, level, 0))
如有必要,用较低的数字替换0。