Sqlite查询错误:不明确的列名称?

时间:2011-06-02 14:38:04

标签: sqlite join ambiguous

我在sqlite3数据库上运行以下查询:

SELECT file.id AS fileID, file.path 
FROM file 
JOIN (SELECT tag_file_map.fileID,tag.tagname 
   FROM tag_file_map, tag JOIN tag ON tag_file_map.tagID = tag.id) 
ON tag_file_map.fileID = file.id 
WHERE tag.tagname = 'tag1' AND tag.tagname= 'tag2';

它给了我以下错误:"ambiguous column name: tag.tagname"

Google似乎表示,当一个或多个表共享列名并且未指定列的特定表时,会产生此错误。但是,这里指定了表名IS。另外,整个数据库中没有其他名称为“tagname”的列,因此无论是否有表名,它都不应该含糊不清。这是一个sqlite问题,还是我的语法错了?

2 个答案:

答案 0 :(得分:1)

在内部选择,更改

FROM tag_file_map, tag JOIN tag on tag_file_map....

FROM tag_file_map JOIN tag on tag_file_map....

答案 1 :(得分:0)

我认为这会奏效......

SELECT file.id AS fileID, file.path 
FROM file 
JOIN 
(SELECT tag_file_map.fileID, tag.tagname FROM tag_file_map 
JOIN tag ON tag_file_map.tagID = tag.id 
WHERE tag.tagname = 'tag1' AND tag.tagname= 'tag2') 
ON tag_file_map.fileID = file.id;