【发布时间】:2020-12-08 20:30:31
【问题描述】:
我想知道是否有人会知道一种优雅且可扩展的方法来完全外部联接多个表,因为我可能希望定期将新表添加到联接中?
现在我的方法包括将表 A 与表 B 完全连接,将结果存储为 cte,然后将 cte 完全连接到表 C,将结果存储为 cte2,将 cte2 完全连接到表 D...你明白了。
每次我想将另一个表添加到联接时创建一个新的 cte 并不是很实用,但是到目前为止我发现的所有其他解决方案都有相同的问题,在 ctes 或在 selects 中总是存在某种无限循环(比如 SELECT blabla FROM (SELECT blabla2 FROM..))。
有什么我不知道的方法可以帮助我执行这个多重完全连接而不陷入 ctes 的无限递归循环?
谢谢
编辑:抱歉,似乎还不够清楚 当我在一个查询中执行多个完全联接时,例如:
SELECT
a.*, b.*, c.*
FROM
tableA a
FULL JOIN
tableB b
ON
a.id = b.id
FULL JOIN
tableC c
ON
a.id = c.id
如果 id 存在于 tableB 和 tableC 但不存在于 tableA 中,我的结果将在应该有的地方创建两行,因为我将 b 连接到 a 和 c 连接到 a 而不是 b 连接到 c。这就是为什么我需要完全加入 a 和 b 到 c 的完全连接的结果。 因此,如果我说五个表而不是三个表,我需要将完全连接的结果完全连接的结果完全连接的结果完全连接的结果... x)
【问题讨论】:
-
目前尚不清楚为什么答案不只是在一个
FROM子句中多次出现FULL OUTER JOIN,没有 CTE 等。也许您可以扩展示例以明确为什么这不是您想要的需要吗? -
用您正在使用的数据库标记您的问题。
标签: sql