假设我想选择matches
与MAX
游戏周期,如果所有的状态matches
被设置好的来3
,或者matches
与MIN
游戏周期我该怎么办呢?
数据样本
id | status | gameweek | round_id
1 3 3 1
2 3 3 1
3 1 3 1
4 1 4 1
5 1 4 1
6 1 4 1
最终结果应该是:1, 2, 3
因为不是所有的比赛都进行了。我能够设置查询MAX
:
SELECT MAX(gameweek) FROM `match` m WHERE round_id = 1 AND m.status = 3
但我有一些难以实施的 IF 条件,有人可以帮助我吗?
谢谢。
更新
在用户提出的解决方案中,我注意到我没有很好地解释特定情况:如果一轮的所有比赛都没有状态 3,则查询应返回指定的 round_id 的 MIN(gameweek)。
好吧,比我想象的简单,我发现我可以使用COALESCE
运算符来实现这个目标,所以:
m.gameweek = (SELECT COALESCE(MIN(
CASE WHEN m2.status < 3
THEN m2.gameweek END),
MAX(m2.gameweek))
FROM `match` m2
WHERE m2.round_id = m.round_id)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句