在 SQL 查询中联接会导致列歧义错误



表名 - 城市

-city_id,city_name

- 状态

-state_id,state_name

表名 - 类别

列名 - category_id,category_name

表名 - 新闻

列名称 - cat_id,state_id,city_id,标题,故事,作者等。

我不得不从城市,州和类别表中选择所有列,以便在新闻表中插入id....

为此,我创建了sql查询并连接了上述所有三个表,但这显示了错误..请帮帮我...

字段列表中的列"state_id"不明确

字段列表中的列"city_id"不明确

字段列表中的列"category_id"不明确

我需要从城市,州和类别表中返回所有列

SELECT city_name,city_id,state_id,category_id,state_name,category_name,headline,author,story,source,photo,date from news left join
 city on news.city_id=city.city_id left join state on news.state_id=state.state_id left join category on news.cat_id=category.category_id;

您需要指定列的来源表。 city_idselect列表中是模棱两可的。 我认为这是正确的别名:

SELECT c.city_name, c.city_id, s.state_id, ca.category_id, s.state_name, ca.category_name,
       n.headline, n.author, n.story, n.source, n.photo, n.date
from news n left join
     city c
     on n.city_id= c.city_id left join
     state s
     on n.state_id = s.state_id left join
     category ca
     on n.cat_id = ca.category_id;

请注意,我引入了表别名。 这些有助于使查询更易于编写和读取。

相同的

原因是,您在状态和新闻表中都有state_id(对于city_id在城市和新闻表中相同)仅举几例,SQL引擎混淆了使用哪一个。因此,我建议您在选择字段中使用表别名或表名称作为前缀。

相关内容

  • 没有找到相关文章

最新更新