如何基于首表获取的唯一ID关联多张表,输出指定结构的查询结果
多表关联查询SQL实现方案
你可以通过UNION ALL拼接两次关联查询的结果来实现需求,参考SQL如下:
SELECT l.ID, l.City_ID, p.Professional_Team_Count, NULL AS Non_Pro_Team_Count, p.Participant_Count FROM Location l INNER JOIN pro_sport_teams p ON l.City_ID = p.City_ID UNION ALL SELECT l.ID, l.City_ID, NULL AS Professional_Team_Count, np.Non_Pro_Team_Count, np.Participant_Count FROM Location l INNER JOIN non_pro_sport_teams np ON l.City_ID = np.City_ID
逻辑说明
- 因为你需要专业运动队、非专业运动队的记录各自单独成一行,所以用
UNION ALL拼接两个独立的关联查询结果即可 - 第一次查询关联Location表和专业队表,将非专业队计数字段置为NULL
- 第二次查询关联Location表和非专业队表,将专业队计数字段置为NULL
- 两个查询的字段顺序、类型完全一致,拼接后输出的结构和你要求的结果完全匹配
- 如果实际表名和示例命名不同,替换SQL中的表名为你实际使用的名称即可
内容的提问来源于stack exchange,提问作者drai29
相关产品推荐
相关产品推荐

