sql - 联合所有两个表而不是连接
问题描述
我有几个表我无法加入它们,因为它变得非常复杂并且 bigquery 无法处理它。所以我试图合并所有表然后分组。在这个过程中我有一个问题。我有两个名为 t1 和 t2 的表,其标题如下,它们没有空值:
a. b. c. d. a. b. c. e.
所以为了联合所有人并将它们分组,我有以下代码:
WITH
all_tables_unioned AS (
SELECT
*,
NULL e
FROM
`t1`
UNION ALL
SELECT
*,
NULL d
FROM
`t2` )
SELECT
a,
b,
c,
MAX(d) AS d,
MAX(e) AS e
FROM
all_tables_unioned
GROUP BY
a,
b,
c
不幸的是,当我运行它时,我得到一个表 a、b、c、d、e,其中 e 列全部为空!我尝试在 union all 之前对每个表运行查询,以确保它们不为空。我真的不知道我的查询有什么问题。
解决方案
union all
不按列名。只需明确列出所有列:
WITH all_tables_unioned AS (
SELECT a, b, c, d, NULL as e
FROM `t1`
UNION ALL
SELECT a, b, c, NULL as d, e
FROM `t2`
)
无论您分配的名称如何,都union all
使用匹配列的位置。
推荐阅读
- python - 考虑到中间的空白列,如何计算列数?
- python - Python - Plotly - 多轴图上的动态 y 轴选择
- kubernetes - 谷歌 GKE 负载均衡器防火墙需要阻止 ping
- templates - 如何使用 Liquid 模板在 Dynamics 365 Web Portal 中显示 MultiSelect 选项集
- vba - 如何使用 VBA 从单击的文本框中获取文本?
- vba - Excel中的工作表大小和内存使用情况
- angular - Angular 指令选择器不适用于外部库中的元素
- javascript - 如何检查电子邮件是否有效
- unit-testing - 通过模拟 getter 测试类
- github - 为什么我需要根据许可证提交补丁?