如果我有两张桌子
Table A
user_id type
123 tier1
124 tier2
Table B
user_id sub_type
123 sub_tier1
125 sub_tier2
我想full outer
加入他们并成为
user_id type sub_type
123 tier1 sub_tier1
124 tier2 null
125 null sub_tier2
我试过像
这样的东西选择coalesce(A.user_id,B.user_id)作为user_id,type,sub_type from A.user_id = B.user_id
上的完整外连接B.
但它不起作用,因为它只获取user_id
的子集,而不是从两个表中合并user_ids
更多细节: 我实际上使用Spark SQL运行它,通过使用上面的查询,它实际上比在数据帧中做的更少结果
tablea.join(tableb,“user_id”,“full”)
答案 0 :(得分:0)
我在这里看不到任何问题。请参阅以下代码段
WITH tablea (user_id, type)
AS (SELECT '123',
'tier1'
UNION
SELECT '124',
'tier2'),
tableb (user_id, sub_type)
AS (SELECT '123',
'sub_tier1'
UNION
SELECT '125',
'sub_tier2')
SELECT COALESCE(a.user_id, b.user_id) AS user_id,
type,
sub_type
FROM tablea a
FULL OUTER JOIN tableb b
ON a.user_id = b.user_id;
USER_ID |TYPE |SUB_TYPE
123 |tier1 |sub_tier1
124 |tier2 |(null)
125 |(null) |sub_tier2
(Complete, 3 rows buffered in 0:00.9)
答案 1 :(得分:0)
正如评论中提到的,我也面临着类似的问题。我重命名加入密钥并解决了问题。尝试重命名user_id列。让我知道结果。