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

发布于 2024-11-13 12:09:57 字数 488 浏览 4 评论 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';

它给了我以下错误:“不明确的列名:tag.tagname”

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

I am running the following query on an sqlite3 database:

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';

It gives me the following error: "ambiguous column name: tag.tagname"

Google seems to say that this error is produced when one or more tables share a column name and the specific table of the column is not specified. However, here, the table name IS specified. Plus, there is no other column with the name "tagname" in the entire database, so it shouldn't be ambiguous with or without the table name. Is this an sqlite problem, or is something off with my syntax?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

空名 2024-11-20 12:09:57

在你内心的选择上,更改

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

FROM tag_file_map JOIN tag on tag_file_map....

on you inner select, change

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

to

FROM tag_file_map JOIN tag on tag_file_map....
柠檬色的秋千 2024-11-20 12:09:57

我认为这会起作用...

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;

I think this will work...

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文