在 PostgreSQL 查询中使用函数表示法而不是点表示法

srt*_*t32 7 sql postgresql join

假设我们有两个表:

  1. contacts具有列的表:idname
  2. conversations具有列的表:idcontact_id(FK 到contacts.id)

以下两个查询返回相同的数据:

  • 点符号: SELECT contacts.name, contacts.id, conversations.id FROM contacts INNER JOIN conversations ON contacts.id = conversations.contact_id;

  • 函数符号: SELECT contacts.name, contacts.id, conversations.id FROM contacts INNER JOIN conversations ON id(contacts) = contact_id(conversations);

出于纯粹的理论原因,我想了解更多有关第二个(功能更强大)版本的信息。这种语法叫什么?我可以在哪里了解更多信息?这是 SQL 标准中的语法还是 PostgreSQL 中的语法?性能好吗?为什么它没有得到更广泛的应用?

Erw*_*ter 3

“函数表示法”是 SQL 标准的扩展,性能与标准“属性表示法”(又名“点表示法”)相同。

名称的解析方式存在细微差别。例如:列名称优先于采用属性表示法的复合类型的函数。

属性表示法仅适用于采用单个参数的函数。所以这是一个有限的替代方案,规范的方法是使用函数的函数表示法(因此得名)。

另一方面,属性表示法更短(一个点与两个括号)、更便携(符合标准)并且通常是表限定列的规范方法。

请在手册中查找详细信息。

有关的: