【问题标题】:Sqlite Query Error: Ambiguous Column Name?Sqlite 查询错误:列名不明确?
【发布时间】:2011-06-02 14:38:03
【问题描述】:

我在 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 问题,还是我的语法有问题?

【问题讨论】:

    标签: sqlite join ambiguous


    【解决方案1】:

    在你内部选择,改变

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

    FROM tag_file_map JOIN tag on tag_file_map....
    

    【讨论】:

    • 我不能这样做 - 然后它给出错误'没有这样的列:tag.tagname',因为表'tag'没有出现在语句中。
    【解决方案2】:

    我认为这会奏效...

    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;
    

    【讨论】:

    • 现在它告诉我“没有这样的列:tag_file_map.fileID”
    • 你自己运行内部查询时有没有返回记录?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2018-08-13
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    相关资源
    最近更新 更多