0

我在 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"

谷歌似乎说当一个或多个表共享一个列名并且没有指定该列的具体表时会产生这个错误。但是,这里指定了表名。另外,整个数据库中没有其他名称为“tagname”的列,因此无论有无表名都不应有歧义。这是一个 sqlite 问题,还是我的语法有问题?

4

2 回答 2

1

在你内心选择,改变

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

FROM tag_file_map JOIN tag on tag_file_map....
于 2011-06-02T14:44:38.717 回答
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;
于 2011-06-02T19:36:03.290 回答