Python MySQL程序JOIN查询报错:VNr列歧义问题求助
解决MySQL JOIN查询中"Column 'VNr' in field list is ambiguous"错误
问题原因
VNr字段同时存在于vare和ordrelinje两个表中,你的SQL语句在SELECT列表里直接写VNr时,数据库无法确定要读取哪个表的VNr字段,因此抛出歧义错误。
修复方案
给VNr字段明确指定所属的表(因为是关联字段,两个表的VNr值一致,选任意一个表即可),修改后的SQL语句如下:
SELECT vare.VNr, Betegnelse, Pris, KatNr, Antall, OrdreNr FROM vare JOIN ordrelinje ON vare.VNr = ordrelinje.VNr
或者给表起别名简化写法(更推荐,可读性更强):
SELECT v.VNr, v.Betegnelse, v.Pris, v.KatNr, o.Antall, o.OrdreNr FROM vare v JOIN ordrelinje o ON v.VNr = o.VNr
修改后的Python函数代码
def DisplayData(): sqlCon = pymysql.connect(host = "localhost", user = "root", password = "root", database = "varehusdb") cur = sqlCon.cursor() # 使用表别名明确指定字段所属表 sql="SELECT v.VNr, v.Betegnelse, v.Pris, v.KatNr, o.Antall, o.OrdreNr FROM vare v JOIN ordrelinje o ON v.VNr = o.VNr" cur.execute(sql) result = cur.fetchall() if len(result) !=0: self.varer_records.delete(*self.varer_records.get_children()) for row in result: self.varer_records.insert('', END, values = row) sqlCon.commit() sqlCon.close()
额外提示
多表关联查询时,建议给所有字段都指定所属表或表别名,既能彻底避免字段歧义问题,也能让SQL语句的可读性和维护性更高。
内容的提问来源于stack exchange,提问作者LarsWiseGuy
相关产品推荐
相关产品推荐

