在Snowflake SQL中如何为表A的category列添加表B的唯一类别值
Snowflake SQL 实现方案
要将表B的类别添加到表A的每个用户下并保留唯一值,可以通过交叉连接生成用户与B类别的组合,再与原表数据合并去重实现,具体SQL如下:
SELECT uid, category FROM A UNION SELECT a.uid, b.category FROM (SELECT DISTINCT uid FROM A) a CROSS JOIN B ORDER BY uid, category;
代码说明:
- 获取原始数据:
SELECT uid, category FROM A直接取出表A的所有原有记录 - 生成用户与B类别的组合:
(SELECT DISTINCT uid FROM A)先提取表A中所有唯一的用户ID- 通过
CROSS JOIN B让每个用户ID与表B的所有类别进行组合,得到每个用户对应B中类别的新记录
- 合并去重:使用
UNION合并原始数据和新生成的记录,UNION会自动剔除重复的(uid, category)组合 - 排序:
ORDER BY uid, category让结果按用户ID和类别排序,与期望输出一致
执行上述SQL后,即可得到你需要的结果。
内容的提问来源于stack exchange,提问作者Wizz
相关产品推荐
相关产品推荐

