2011-08-21 97 views
1

我有一个表:sqlite3的SELECT WHERE子句帮助

CREATE TABLE "feeds" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
"md5" varchar(32), 
"title" varchar(255)); 
CREATE INDEX "index_feeds_on_md5" ON "feeds" ("md5"); 

当我运行:select id, title, md5 from feeds WHERE feeds.title = 'Authors Audio';

它返回:

id|title|md5 
99|Authors Audio|5db86b5899889e0ea49b0ab7ff6223f0 

当我运行:select id, title, md5 from feeds WHERE feeds.md5 = '5db86b5899889e0ea49b0ab7ff6223f0';

它返回没有。

为什么? 列名md5是SQLite3中的保留字吗? 根据:http://www.sqlite.org/lang_keywords.htmlmd5不是SQLite中的保留字。

+0

最终成为决议的是什么? – styler1972

+0

说实话,我从来没有找到答案。所以我只是重新设计了表格,不使用md5这个词。那很好。 – Ryan

回答

0

尝试在您的查询中勾选字段名称。

select `id`, `title`, `md5` from `feeds` WHERE `feeds`.`md5` = '5db86b5899889e0ea49b0ab7ff6223f0' 

这将有助于区分您的表结构,以便您不会遇到像这样的问题。

+0

不幸的是,相同的结果。另外根据http://www.sqlite.org/lang_keywords.html md5不是保留字。所以我需要重新标题这个问题。 – Ryan

+0

你在哪个客户端程序中执行此查询?当列名完全符合表名时,有些会遇到麻烦,例如feeds.md5 – Tim

+0

'$ sqlite3 --version'给了我'3.7.4'。它是一个Ubuntu软件包:'3.7.4-2ubuntu5' – Ryan