首页 > 解决方案 > 如何在 BigQuery 中使用 WITH AS 创建的时态表进行连接?

问题描述

我在 BigQuery 中工作,我正在使用 WITH AS 语句创建临时表,然后在它们之间进行连接,我们将它们命名为 table_1 和 table_2。这些表创建起来很复杂,我的意思是,它们需要大量的工作和代码,并且我需要重复使用它们,并且我希望避免每次都进行大而昂贵的子查询,例如,在它们之间进行左连接. 问题是当我创建 table_1 时一切正常,但是当我创建 table_2 并尝试进行左连接时,会弹出一个警告并告诉我 table_1 不存在,那么我该怎么做呢?我的代码如下:

WITH table_1 AS ( SELECT key,f2,f3 FROM xxxxxxx WHERE XXXXXXXXX)
SELECT * table_1;

WITH table_2 AS ( SELECT key,f4,f5 FROM xxxxxxx WHERE XXXXXXXXX)
SELECT * table_2;

我想在 key 上的 table_1 和 table_2 之间进行左连接,但我不知道该怎么做。有什么提示吗?提前致谢和问候

标签: sqlgoogle-bigqueryleft-join

解决方案


WITH您可以在同一语句中定义多个表达式来进行连接。

WITH table_1 AS ( SELECT key,f2,f3 FROM xxxxxxx WHERE XXXXXXXXX),
table_2 AS ( SELECT key,f4,f5 FROM xxxxxxx WHERE XXXXXXXXX)
SELECT * table_1 LEFT JOIN table_2 ON table_1.key = table_2.key;

推荐阅读