2016-06-19 37 views
5

我是SQL初學者,所以如果這個問題很原始,我很抱歉。
我剛剛開始遵循http://www.w3schools.com的教程,因此下載了「Northwind」數據庫以嘗試使用它,並使用pgAdmin 3控制檯訪問數據庫。 我只是想簡單的命令來選擇表中的一列,但它與任何列從任何表SQL - 提示引用列

LINE 1: select City from Customers; 
         ^
HINT: Perhaps you meant to reference the column "customers.City". 

我想問一下有沒有什麼事錯在我的命令給出了同樣的以下信息?以及如何解決它?

謝謝

+1

w3school已被黑客入侵? (我得到各種reli-廢話) – wildplasser

+1

@wildplasser我認爲正確的URL是http://www.w3schools.com –

+0

@wildplasser對不起,這是我的mistyping。正如馬丁所說,我編輯了該鏈接。 – philippos

回答

10

當您導入此「Northwind」數據庫列名稱導入到CamelCase中時 - 導入必須已將雙引號添加到列標識符create table查詢中。

這是相當不幸的,因爲這會導致你不得不也引述他們所有的查詢,如:

select "City" from customers; 

爲了保持清醒,我建議你rename all columns to lower case。這種方式並不重要,因爲Postgres會自動將所有未加引號的標識符轉換爲小寫。然後任何這將工作:

select city from customers; 
select City from Customers; 
SELECT CITY FROM CUSTOMERS; 
+0

謝謝@Tometzky!它重命名所有列後工作。但是,我會問你是否有任何關於導入數據庫的參考信息,以便我保留所有的名稱。 – philippos

0

您的查詢沒有任何問題。它看起來像你的教程希望你遵循總是將表名添加到你引用的列的做法。實際上,只有當它會引起歧義時才需要(例如,如果您引用了兩個表,其中都有城市列)。

+0

這看起來像一個postgres功能不是教程。 http://pgeoghegan.blogspot.co.uk/2015/11/suggesting-corrected-column.html我會猜測大小寫敏感性,因爲'customers'vs'Customers'跳出來了,但對Postgres不夠熟悉,確定。 –