Redshift SQL两表连接问题:如何生成指定结构的结果集
在Amazon Redshift中实现指定的表连接结果
你需要使用FULL OUTER JOIN,并同时基于id和country两个字段进行匹配,就能得到期望的结果。对应的SQL语句如下:
SELECT COALESCE(t1.id, t2.id) AS id, COALESCE(t1.country, t2.country) AS country, t1.x, t2.y FROM Table_1 t1 FULL OUTER JOIN Table_2 t2 ON t1.id = t2.id AND t1.country = t2.country ORDER BY id, country;
逻辑说明:
FULL OUTER JOIN会保留两个表中所有记录:包含两表匹配成功的行,也包含左表(Table_1)无匹配的行、右表(Table_2)无匹配的行- 连接条件同时指定
id和country,确保只有当这两个字段完全匹配时,才会将x和y值对应到同一行 COALESCE函数用来处理NULL值:当其中一个表的id或country为NULL时,取另一个表的对应值,保证结果中id和country字段始终有值ORDER BY用来排序,让结果和你期望的格式一致
执行结果:
运行上述SQL后,将得到你想要的输出:
id country x y 1 fr 10 80 2 fr 20 NULL 2 gb NULL 40 3 fr 30 NULL 3 gb NULL 60 4 fr NULL 90
内容的提问来源于stack exchange,提问作者Nicolas1510
相关产品推荐
相关产品推荐

