SQL如何关联Team与Match表 同时获取主队和客队的完整信息
实现方案
你需要对Team表执行两次关联查询,分别给映射主队、客队的Team表设置独立别名,即可同时拉取两队的完整字段信息,避免字段冲突。
参考SQL代码
SELECT m.id AS match_id, h.id AS host_id, h.name AS host_name, g.id AS guest_id, g.name AS guest_name FROM `Match` m -- 关联主队对应球队信息,Team表取别名h LEFT JOIN Team h ON m.host_id = h.id -- 关联客队对应球队信息,Team表取别名g LEFT JOIN Team g ON m.guest_id = g.id
注意事项
- 这里使用
LEFT JOIN是为了保证即使某场比赛的主队/客队ID存在异常缺失,也不会丢失整条比赛记录;如果你要求只有两队信息都完整时才返回记录,可以将LEFT JOIN替换为INNER JOIN Match属于部分SQL数据库的保留关键字,查询时需要根据你使用的数据库类型做转义:MySQL用反引号包裹、SQL Server用方括号包裹、PostgreSQL用双引号包裹,避免触发语法报错- 如果
Team表还有其他需要展示的字段,分别用h.字段名拉取主队属性、g.字段名拉取客队属性即可
内容的提问来源于stack exchange,提问作者yasamingol
相关产品推荐
相关产品推荐

