sql - 如何在 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 之间进行左连接,但我不知道该怎么做。有什么提示吗?提前致谢和问候
解决方案
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;
推荐阅读
- r - 使用 Rvest 从多个页面中抓取文本、表格并将两者结合起来
- python - Python:如何使用更少的行来优化列表结果?这个问题已经用 zip 回答了
- python - ValueError:一个操作对梯度有“无”。请确保您的所有操作都定义了渐变
- flutter - 如何在 Flutter 中调整图像或小部件的色相饱和度和亮度?
- jquery - 从文本字段中获取输入并将其转换为另一行的 url slug
- node.js - Node js 对“FFI 模块”的支持
- excel - Excel VBA IE 与 XMLHTTP 差异
- c++ - 如何使用 C++ 在 Windows 10 中捕获 D3D 窗口
- c++ - Windows 可执行文件在我的 linux 上执行
- javascript - E.js 模板:意外的标记 'else'