sql - 在获取 SQL 联接中的所有列时遇到问题 - BigQuery SQL JOINS
问题描述
我在 Bigquery 中的 SQL 连接遇到了一些问题。我对 SQL 很陌生,所以我很确定这只是一些基本的理解类型问题。希望有人能指出我正确的方向。
样本加入:
SELECT domain,content1,content2,content3,content4 FROM `project.dataset.content` //10 rows
FULL OUTER JOIN
(Select domain from `project.dataset.all_domains`) USING (domain) //100 rows - This is a single column list of all GUIDs in my dataset. Each Table uses the same GUIDs a portion of this list, so I am joining it to ensure I get all data returned to a single table
FULL OUTER JOIN
(Select * [e.g.: domain,color1,color2,etc.] from`project.dataflowed.color`) USING (domain) // 10 rows
FULL OUTER JOIN
(Select * from `project.dataset.language`) USING (domain) //10 rows
FULL OUTER JOIN
(Select * from `project.dataset.type`) USING (domain) //10 rows
我以为我明白这是如何工作的,但我似乎只是:
|| 域名 | 内容1 | 内容2 | 内容3 | 内容4 || <--100 行-->
但我希望得到:|| 域名 | 内容1 | 内容2 | 内容3 | 内容4 | 颜色 1 | 颜色 2... | 语言2 | 语言 2... | 类型1 | 类型2...|| <--100 行-->
所以除了原始(左?)表之外,我基本上没有得到任何列..?
有人可以帮我理解我做错了什么吗?
解决方案
所以除了原始(左?)表之外,我基本上没有得到任何列..?
以下是 BigQuery 标准 SQL 并专门解决上述问题 - 我假设您的FULL OUTER JOIN
部分是正确的并代表您期望的任何逻辑
#standardSQL
SELECT *
FROM `project.dataset.content`
FULL OUTER JOIN `project.dataset.all_domains` USING(domain)
FULL OUTER JOIN `project.dataset.color` USING(domain)
FULL OUTER JOIN `project.dataset.language` USING(domain)
FULL OUTER JOIN `project.dataset.type` USING(domain)
上面假设所有表之间唯一的公共字段名称是domain
- 否则您需要在 SELECT 列表中显式列出所有输出字段并为不明确的字段提供别名。喜欢SELECT domain, content1, content2, color1, color2, ...
推荐阅读
- html - R Shiny - 可折叠菜单项中的右对齐操作按钮导致重影效果?
- ionic-framework - 如何从我自己的移动应用程序链接到官方应用程序中的 YouTube 播放列表
- c++ - 擦除-删除段错误,但在循环中擦除有效
- eclipse - Problem: failed to create task or type workspacePreferenceFile
- python - 将 BigQuery 数据集位置存储为变量的最佳方法 - python
- javascript - 使用javascript在网页中设置不同的src图片
- c++ - C++ 我需要能够调整我的动态数组的大小
- r - 沿矩阵中的对角线设置值
- reactjs - 'Uncaught SyntaxError: Unexpected token <' 登录表单
- ios - 将使用 Alamofire 下载的文件访问到具有未知文件名的下载目录