字段列表中的列是不明确的错误

时间:2015-07-08 16:10:34

标签: sql join

我最近在mysql和我写的一个请求中工作:

SELECT SIGLE_EEP, ID_SOUS_MODULE, LIBELLE 
FROM mef_edi.eep a, mef_edi.envoi e, mef_edi.sous_module s 
WHERE a.ID_EEP =  e.ID_EEP 
AND a.ID_SOUS_MODULE = s.ID_SOUS_MODULE; 

他们告诉我:

  

字段列表中的列ID_SOUS_MODULE不明确

我该怎么办?

2 个答案:

答案 0 :(得分:2)

多个表都有一个名为ID_SOUS_MODULE的列。

因此,每次提到列时都需要为表命名,以指定您所指的表。

更改

SELECT ID_SOUS_MODULE 

例如

SELECT a.ID_SOUS_MODULE 

答案 1 :(得分:0)

我同意上面的答案,你可能在3个表中有重复的列名,如上所述分配表id(a,e,s)将避免选择中的那个问题。除了@juergen所说的你可能想要通过使用内部或左边连接来摆脱笛卡尔连接(内部似乎是你想要的)。您加入表格的方式是将每个可能的行组合加在一起而不是过滤。随着表格数量的增长,使用正确的连接可以在长期内获得更好的性能。以下是非笛卡尔联合的示例:

SELECT SIGLE_EEP, ID_SOUS_MODULE, LIBELLE 
FROM mef_edi.eep a
INNER JOIN mef_edi.envoi e ON (a.ID_EEP =  e.ID_EEP) 
INNER JOIN mef_edi.sous_module s ON (a.ID_SOUS_MODULE = s.ID_SOUS_MODULE)