You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复SQL多表关联查询时错误使用ID列而非GenreID列的问题

错误原因

你使用的NATURAL JOIN会自动匹配两张表中名称完全相同的列作为连接条件,你的Animes表和Genres表都存在名为ID的字段,所以连接逻辑默认是Animes.ID = Genres.ID,完全不符合你需要的Animes.GenreID = Genres.ID的关联规则。

修复方案

推荐使用INNER JOIN显式指定连接条件,这种写法逻辑更清晰,也不会因为后续表新增同名字段出现隐性错误,修改后的代码如下:

import sqlite3
conn = sqlite3.connect("ShowInformation.db")
c = conn.cursor()
# 显式指定关联条件:Animes表的GenreID关联Genres表的主键ID
c.execute('''SELECT Animes.Name, Genres.GenreName, Animes.GenreID  
FROM Genres
INNER JOIN Animes ON Animes.GenreID = Genres.ID''')
item = c.fetchall()

print (item)

conn.commit()
conn.close()

字段前加上表名前缀也可以避免不同表字段重名带来的查询歧义。

内容的提问来源于stack exchange,提问作者ShadowPoke3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:57:03