SQL - 提示引用列

问题描述:

我是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

当您导入此“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

这看起来像一个postgres功能不是教程。 http://pgeoghegan.blogspot.co.uk/2015/11/suggesting-corrected-column.html我会猜测大小写敏感性,因为'customers'vs'Customers'跳出来了,但对Postgres不够熟悉,确定。 –