Postgresql 内部联接引用列无效

Postgresql 内部联接引用列无效,postgresql,Postgresql,我正在尝试基于两列进行内部联接,但在正确引用列时遇到问题。我使用了以下查询,据我所知,这是postgresql中的最佳实践。我试图对两个表进行内部联接的是mk_kw和adwords_final,要联接的两个列都命名为“Key” 这是一个问题 SELECT * FROM adwords_final INNER JOIN mk_kw ON "mk_kw.Key" = "adwords_final.Key"; 结果如下 ERROR: column "mk_kw.Key" does not ex

我正在尝试基于两列进行内部联接,但在正确引用列时遇到问题。我使用了以下查询,据我所知,这是postgresql中的最佳实践。我试图对两个表进行内部联接的是mk_kw和adwords_final,要联接的两个列都命名为“Key”

这是一个问题

SELECT
 *
FROM
 adwords_final
INNER JOIN mk_kw ON "mk_kw.Key" = "adwords_final.Key";
结果如下

ERROR:  column "mk_kw.Key" does not exist
LINE 5: INNER JOIN mk_kw ON "mk_kw.Key" = "adwords_final.Key";
                        ^
ERROR: column "mk_kw.Key" does not exist
SQL state: 42703
Character: 51
这些列确实存在于此上下文中。有没有更好的方法来引用这些列


非常感谢。

查询应为:

 SELECT
 *
FROM
adwords_final
INNER JOIN mk_kw ON mk_kw.Key = adwords_final.Key;
下面是如何编写内部联接的示例:

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

订单
客户
是表名
CustomerID
CustomerName
OrderID
是列名。所有查询都区分大小写。

查询应为:

 SELECT
 *
FROM
adwords_final
INNER JOIN mk_kw ON mk_kw.Key = adwords_final.Key;
下面是如何编写内部联接的示例:

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

订单
客户
是表名
CustomerID
CustomerName
OrderID
是列名。它们都是区分大小写的。

Peter Haddad的解决方案仍然会给您一个错误,因为
key
是一个保留字。您需要将查询的列名部分单独用双引号括起来,如下所示:

选择
*
从…起
ADU期末考试
内连接
mk_kw上的mk_kw.“键”=adwords_final.“键”;

编辑:更新以反映下面的评论

Peter Haddad的解决方案仍然会给您一个错误,因为
key
是一个保留字。您需要将查询的列名部分单独用双引号括起来,如下所示:

选择
*
从…起
ADU期末考试
内连接
mk_kw上的mk_kw.“键”=adwords_final.“键”;

编辑:更新以反映下面的评论

您需要删除引用,因此不使用此
“mk_kw.key”
,而是编写此
mk_kw.key
,也适用于
adwords_final.key
。错误:列mk_kw.key不存在第5行:内部连接mk_kw.key=adwords_final.key提示:也许您想引用“mk_kw.Key”列错误*******错误:列mk_kw.key不存在SQL状态:42703提示:可能您想引用列“mk_kw.key”。字符:51是的,只需删除引号。。。所以它是
mk_kw.Key
,在点之后,你用大写字母K写下列名
Key
。是的,我这样做了,但是我得到了我贴在上面的结果。你需要删除引号,所以不要写这个
“mk_kw.Key”
,写这个
mk_kw.Key
,也适用于
adwords\u final.Key
。错误:列mk\u kw.Key不存在第5行:内部连接mk\u kw ON mk\u kw.Key=adwords\u final.Key;^提示:也许您想引用“mk_kw.Key”列错误*******错误:列mk_kw.key不存在SQL状态:42703提示:可能您想引用列“mk_kw.key”。字符:51是的,只需删除引号。。。所以它是
mk_kw.Key
,在点之后,你写的列名是
Key
,带有大写字母K。是的,我这样做了,但是我得到的结果是我贴在上面的。“列名区分大小写”-不区分大小写。只有使用双引号时,它们才区分大小写。这意味着在创建表时使用了双引号。但是
key
无论如何都需要被引用,因为它是一个保留关键字哦,我想我的解决方案是正确的,但推理是错误的。。。谢谢你清理它!假设我有一个名为
todo
的表,并且想加入一个名为
userId
的列,我仍然需要双引号引userId,因为'i'大写正确吗?正确:但是你应该避免那些可怕的引号引到的标识符。他们的麻烦远比他们值得的多。啊,我明白了!我将更仔细地查看wiki链接!我之所以有
userId
,是因为我在使用sequelize,它在
todo
表中为我自动创建了外键。我想我应该将其配置为创建带有下划线的列名,例如
user\u id
“列名区分大小写”-不区分大小写。只有使用双引号时,它们才区分大小写。这意味着在创建表时使用了双引号。但是
key
无论如何都需要被引用,因为它是一个保留关键字哦,我想我的解决方案是正确的,但推理是错误的。。。谢谢你清理它!假设我有一个名为
todo
的表,并且想加入一个名为
userId
的列,我仍然需要双引号引userId,因为'i'大写正确吗?正确:但是你应该避免那些可怕的引号引到的标识符。他们的麻烦远比他们值得的多。啊,我明白了!我将更仔细地查看wiki链接!我之所以有
userId
,是因为我在使用sequelize,它在
todo
表中为我自动创建了外键。我想我应该将其配置为创建带有下划线的列名,如
user\u id