You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL统计各参赛队对应结果字段为NULL的数量实现方法

需求背景

MySQL数据表game1结构如下:

  • player1:对阵左侧队伍名称
  • player2:对阵右侧队伍名称
  • result_1:player1对应的比赛结果
  • result_2:player2对应的比赛结果

需要统计每个参赛队伍作为对阵方时,自身对应结果字段为NULL的总次数,最终返回player(队伍名称)、count_null(NULL值计数)两列结果,预期结果为:team1计数0、team2计数1、team3计数2。

实现方案

核心逻辑是将左右两侧的对阵队伍纵向拆分为独立行,每行仅判断当前位置队伍对应的结果字段是否为NULL,再按队伍分组聚合计数即可,具体SQL如下:

SELECT
    player,
    SUM(is_null_flag) AS count_null
FROM (
    -- 提取左侧对阵队伍,匹配自身结果字段的NULL状态
    SELECT
        player1 AS player,
        IF(result_1 IS NULL, 1, 0) AS is_null_flag
    FROM game1
    UNION ALL
    -- 提取右侧对阵队伍,匹配自身结果字段的NULL状态
    SELECT
        player2 AS player,
        IF(result_2 IS NULL, 1, 0) AS is_null_flag
    FROM game1
) AS temp
GROUP BY player;
注意事项

合并两侧数据时必须使用UNION ALL,不能用UNION。UNION会对合并后的结果做去重操作,会导致重复出现的NULL记录被过滤,最终统计值偏小。

内容的提问来源于stack exchange,提问作者Jinyeong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 15:45:33