我在 Google Big Query 中有两个表。第一个表是产品目录 (1:1),第二个表是产品相关信息 (1:n)。对于查询,我将两者都加入。但连接失败,因为pid两个表中都存在该列和其他一些列。
#standardSQL
SELECT tbl1.*, tbl2.* FROM (
SELECT * FROM `my_project.my_dataset.my_table_1`
) AS tbl1
LEFT JOIN ( SELECT * FROM `my_project.my_dataset.my_table_2`) AS tbl2
ON tbl1.pid = tbl2.pid
WHERE tbl1.category LIKE '111002%'
Run Code Online (Sandbox Code Playgroud)
想法1:如何*在没有重复列的情况下进行选择(我可以手动输入)。
想法2:如何为连接中的列提供左/右前缀?
任何帮助表示赞赏。
pid为了避免从连接两侧重复,请改用USING子句:
#standardSQL
SELECT * FROM (
SELECT * FROM `my_project.my_dataset.my_table_1`
) AS tbl1
LEFT JOIN ( SELECT * FROM `my_project.my_dataset.my_table_2`) AS tbl2
USING(pid)
WHERE tbl1.category LIKE '111002%'
Run Code Online (Sandbox Code Playgroud)
要为连接两侧的列名称添加前缀,请使用对选择列表中的表的引用,而不是应用于.*它们:
#standardSQL
SELECT tbl1, tbl2 FROM (
SELECT * FROM `my_project.my_dataset.my_table_1`
) AS tbl1
LEFT JOIN ( SELECT * FROM `my_project.my_dataset.my_table_2`) AS tbl2
USING(pid)
WHERE tbl1.category LIKE '111002%'
Run Code Online (Sandbox Code Playgroud)
查询生成的列将为tbl1和tbl2,它们是包含每个表中的列作为字段的结构。
| 归档时间: |
|
| 查看次数: |
2420 次 |
| 最近记录: |