MySQL实现忽略主客场顺序的球队交手次数统计查询
解决方案
你原查询的分组逻辑已经满足「主客场互换算同一对阵」的统计规则,只需要调整字段拼接逻辑即可输出指定格式的结果,同时可以去掉冗余的HAVING条件。
修改后SQL语句
SELECT CONCAT( LEAST(home_team, away_team), ' - ', GREATEST(home_team, away_team), ' ', COUNT(*) ) AS match_result FROM event_entity GROUP BY LEAST(home_team, away_team), GREATEST(home_team, away_team) ORDER BY LEAST(home_team, away_team), GREATEST(home_team, away_team);
逻辑说明
- 保留原有的
LEAST()、GREATEST()逻辑:无论球队是主场还是客场,都按名称字典序固定排列在前/后位,保证A对阵B、B对阵A会被分到同一组统计 - 删除了原语句中
HAVING COUNT(*) >= 1的条件:GROUP BY聚合生成的分组,计数必然≥1,该条件无实际筛选作用 - 用
CONCAT()函数拼接字段:使用-作为对阵双方的分隔符(和你给出的第三条示例格式完全匹配,也能避免分隔符和球队名称内部可能出现的连字符混淆),末尾拼接空格和交手总次数,输出格式完全符合要求。如果你需要前两条示例里无空格的短横分隔,只需要把拼接用的' - '替换为'-'即可。
内容的提问来源于stack exchange,提问作者Volear
相关产品推荐
相关产品推荐

