SQLLite如何联接多表而无列歧义

时间:2018-10-02 13:00:13

标签: sqlite inner-join

我有以下简化的SQLLite查询:

SELECT SPECIALTABLE.DETAILS AS Details 
FROM SPECIALTABLE 
INNER JOIN CUSTOMERTABLE 
ON CUSTOMERTABLE.CUSCODE = SPECIALTABLE.CUSCODE 
INNER JOIN CUSTOMERNAMETABLE 
ON CUSTOMERNAMETABLE.NAMECODE = CUSTOMERTABLE.NAMECODE 
WHERE NAMECODE LIKE '%' LIMIT 10

SPECIALTABLE不包含NAMECODE列。

但是当我运行查询时,它在NAMECODE上显示“模棱两可的列名”错误。我不想在名称代码上指定表格(例如,WHERE CUSTOMERTABLE.NAMECODE喜欢...)。

据我了解,SQLLite应该将这些连接的结果视为一个包含一个表中所有列的大表,那么为什么会有歧义?

问题在于没有直接链接SPECIALTABLE和CUSTOMERNAMETABLE的列。

1 个答案:

答案 0 :(得分:1)

在写最后一行时,您无需指定NAMECODE的状态。因此,SQL无法正确捕获NAMECODE,因为它们有两个定义(CUSTOMERNAMETABLE.NAMECODECUSTOMERTABLE.NAMECODE

WHERE NAMECODE LIKE '%' LIMIT 10

尝试指定要使用NAMECODE条件的表,如下所示:

WHERE CUSTOMERNAMETABLE.NAMECODE LIKE '%' LIMIT 10

或者这个:

WHERE CUSTOMERTABLE.NAMECODE LIKE '%' LIMIT 10