【发布时间】:2020-11-06 17:28:52
【问题描述】:
在做一些作业时,我发现了一个问题,他们要求我列出 PostreSQL 中所有可能的连接类型。 我的答案是:
- 内连接
- 左外连接
- 右外连接
- 完全外连接
- 交叉连接
及其所有 NATURAL 等价物(NATURAL INNER JOIN、NATURAL LEFT OUTER JOIN,...)。
但是,教授告诉我们,还有一种很难找到的 JOIN 类型。在我使用 SQL 的 2 年中,我从未见过除这些以外的任何其他 JOIN 类型。
你知道任何其他的 JOIN 类型吗?你能帮帮我吗?
非常感谢。
【问题讨论】:
-
有些东西叫做反连接,虽然它们不是用
JOIN关键字处理的。 -
UNION JOIN在 2003 年之前一直是 SQL 标准的一部分。不过,Afaik PostgreSQL 从未实现过它。 -
LATERAL JOINs 怎么样?见7.2.1.5 Lateral Subqueries -
这个不清楚。--“join type”是什么意思?逗号/隐式连接是与 CROSS JOIN 不同的“类型”连接吗?没有 OUTER 不同“类型”的连接是连接吗?内部连接是否使用 ON 与使用 2 种不同的“类型”? LATERAL 是否给出不同的“类型”?将使用 LATERAL 的连接表达式解释为不同类型的连接有点过分。 LATERAL 是当某些名称出现在某些子表达式中时 DBMS 可能需要的关键字。它可以被排除在处理所有情况所需的 DBMS 的语言之外。需要 LATERAL 的情况以显而易见的方式解释名称。
-
@philipxy 嗨,菲利普,我想几乎我们所有人都很清楚。答案完美地解决了我的问题。谢谢。
标签: sql postgresql join