微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

联合所有两个表而不是加入

如何解决联合所有两个表而不是加入

我有几个表我无法加入它们,因为它变得非常复杂并且 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,c

不幸的是,当我运行它时,我得到一个表 a,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,NULL as d,e
      FROM `t2`
     )

无论您分配什么名称,union all 都会使用位置来匹配列。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。