我有以下简化的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的列。
答案 0 :(得分:1)
在写最后一行时,您无需指定NAMECODE的状态。因此,SQL无法正确捕获NAMECODE,因为它们有两个定义(CUSTOMERNAMETABLE.NAMECODE
和CUSTOMERTABLE.NAMECODE
)
WHERE NAMECODE LIKE '%' LIMIT 10
尝试指定要使用NAMECODE条件的表,如下所示:
WHERE CUSTOMERNAMETABLE.NAMECODE LIKE '%' LIMIT 10
或者这个:
WHERE CUSTOMERTABLE.NAMECODE LIKE '%' LIMIT 10