我有多个表,其中大约有 10 个公共列,但有些表有 1-2 个额外列。
我想将所有这些表组合成一个表,每个表中的每一行都有一行,每个特定行的源表中不存在的任何列都具有 NULL 值。
所以我的输入大致如下:
table1
id | colA | colB
table2
id | colA | colB | colC
table3
id | colA | colB | colD
我正在尝试得到这个:
allTables
id | colA | colB | colC | colD
在上面的示例中,table1 中的所有行的 allTables 中的 colC 和 colD 都将为 NULL 值,table2 中的所有行的 colD 都将为 NULL 值,table3 中的所有行的 colC 都将为 NULL 值。
一些注意事项:
- 表之间的列 ID 不相同或不相关
- 我的示例显示了 3 个表,但我大约有 8-9 个表。
- 每个源表中都存在重复行,应予以保留。
我特别感兴趣是否有类似于投票最高的答案here或者类似的更普遍的东西。
SELECT
id,
colA,
colB,
NULL AS colC,
NULL AS colD
FROM
Table1
UNION ALL
SELECT
id,
colA,
colB,
colC,
NULL AS colD
FROM
Table2
UNION ALL
SELECT
id,
colA,
colB,
NULL AS colC,
colD
FROM
Table3
由于 id 不相关,您可能还想跟踪该行来自哪个表,以防表之间存在重复项。为此,只需在三个中的每一个中使用一个硬编码值和一个具有不同值的别名即可SELECT
声明。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)