如何在Redshift SQL中实现两张表的笛卡尔积查询
如何用Redshift SQL生成两表的全量关联结果集?
你需要将存储月份的表1和存储客户ID的表2做全量关联,让每个月份与所有客户ID一一配对,生成笛卡尔积形式的结果集。
表结构示例
表1(月份表)
month january-2022 february-2022 march-2022
表2(客户ID表)
client_id 100123 100124 100125
期望输出
month client_id january-2022 100123 february-2022 100123 march-2022 100123 january-2022 100124 february-2022 100124 march-2022 100124 january-2022 100125 february-2022 100125 march-2022 100125
解决方案
使用Redshift支持的CROSS JOIN(交叉连接)语法,它会返回两张表的笛卡尔积,即表1的每一行与表2的每一行进行组合,正好满足你的需求:
SELECT t1.month, t2.client_id FROM 表1 t1 CROSS JOIN 表2 t2;
也可以使用隐式交叉连接的写法(效果相同,但显式CROSS JOIN可读性更强,推荐使用):
SELECT t1.month, t2.client_id FROM 表1 t1, 表2 t2;
说明
CROSS JOIN不需要关联条件,直接将两张表的所有行进行组合- 如果表数据量较大,笛卡尔积会生成大量数据,执行前请确认业务需求和数据规模
内容的提问来源于stack exchange,提问作者Marcio Veiga
相关产品推荐
相关产品推荐

