2011-08-21 96 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