首页 > 解决方案 > 联合所有两个表而不是连接

问题描述

我有几个表我无法加入它们,因为它变得非常复杂并且 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 之前对每个表运行查询,以确保它们不为空。我真的不知道我的查询有什么问题。

标签: sqlgroup-bygoogle-bigqueryunion-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使用匹配列的位置。


推荐阅读