SQLite3列名歧义问题:关联同一国家表查询世界杯赛事数据
解决SQLite关联同表两次的列名歧义问题
当两次内联countries表时,SQL无法区分两个表实例的country列,因此会抛出ambiguous column name: countries.country错误。核心解决方法是给每个关联的表设置别名,明确区分不同的关联逻辑。
正确的查询语句
SELECT editions.year, host.country AS 主办国, champion.country AS 冠军国 FROM editions INNER JOIN countries AS host ON editions.host = host.countries_id INNER JOIN countries AS champion ON editions.champion = champion.countries_id;
说明
- 给关联主办国的
countries表起别名host,对应editions.host的外键关系 - 给关联冠军国的
countries表起别名champion,对应editions.champion的外键关系 - 通过别名指定要查询的
country列,同时用AS为结果列设置直观名称,避免列名混淆
内容的提问来源于stack exchange,提问作者Gasconheart
相关产品推荐
相关产品推荐

