请求编写MySQL多表连接查询语句:关联3张表获取指定赛事数据
MySQL多表连接查询实现需求
表关联前提假设
基于表名推断的字段关联关系:
tournament_table:tournament_id(主键)、t_name(赛事名称)tournament_participant:tournament_id(关联赛事表)、team_id(关联队伍表)team_name:team_id(主键)、name(队伍名称)
对应查询语句
SELECT tt.t_name AS `赛事名称`, COUNT(tp.team_id) AS `# of teams`, GROUP_CONCAT(tn.name SEPARATOR ', ') AS `team_names` FROM tournament_table tt LEFT JOIN tournament_participant tp ON tt.tournament_id = tp.tournament_id LEFT JOIN team_name tn ON tp.team_id = tn.team_id WHERE tt.tournament_id = 1 GROUP BY tt.tournament_id, tt.t_name;
语句说明
- 采用
LEFT JOIN保证即使赛事无参赛队伍,仍能返回赛事基础信息(此时队伍数量为0,名称列表为NULL) COUNT(tp.team_id)精准统计有效参赛队伍数,规避NULL值干扰GROUP_CONCAT将队伍名称拼接为逗号分隔的字符串,可通过修改SEPARATOR参数调整分隔符格式GROUP BY子句包含赛事ID和名称,符合MySQL分组规则要求
内容的提问来源于stack exchange,提问作者Lance
相关产品推荐
相关产品推荐

