我在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问题,还是我的语法错了?
答案 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;