我在SQLite數據庫中有兩個表,INVITEM和SHOPITEM。他們的共享屬性是ItemId,我想執行一個INNER JOIN。這裏的查詢:SQLite INNER JOIN中的「模棱兩可的列名」
SELECT INVITEM.CharId AS CharId,
INVITEM.ItemId AS ItemId
FROM (INVITEM as INVITEM
INNER JOIN SHOPITEM AS SHOPITEM
ON SHOPITEM.ItemId = INVITEM.ItemId)
WHERE ItemId = 3;
SQLite不喜歡它:
SQL error: ambiguous column name: ItemId
錯誤消失,如果我寫WHERE INVITEM.ItemId = 3
,但由於WHERE條件或多或少用戶指定的,我寧願做它工作時無需指定表格。 NATURAL JOIN似乎解決了這個問題,但我不確定解決方案是否足夠普遍(即我可以在這種情況下使用,但我不確定是否可以在任何情況下使用)
任何備用SQL將解決問題的語法?
我最終做了這樣的事情。我從不允許用戶直接編寫SQL,但WHERE子句是使用表達式模板構建的。在需要的地方限定列名就夠了。 – ggambett 2009-02-18 12:21:54