繁体   English   中英

从另一个表向 SQL(Snowflake) 中的列添加值

[英]Adding values to a column in SQL(Snowflake) from another table

我有两张桌子A,B

表一:

uid  category  
 1     a     
 1     b     
 1     c     
 2     b     
 2     d     

表 B:

category
  d       
  e       

表 A 包含用户 ID 和类别
表 B 包含用户选择最多的前 2 个类别

如何将表 B 中的类别添加到表 A 中的类别列,但仅添加不同的值。

最后结果

uid  category
 1      a     
 1      b     
 1      c     
 1      d
 1      e     
 2      b     
 2      d     
 2      e     

可以通过对来自表 A 的不同 UID 和来自表 B 的类别执行 CROSS JOIN 来生成缺失的行:

WITH cte AS (
   SELECT A.UID, B.CATEGORY
   FROM (SELECT DISTINCT UID FROM tableA) AS A
   CROSS JOIN tableB AS B
)
SELECT A.UID, A.CATEGORY
FROM tableA AS A
UNION ALL 
SELECT C.UID, C.CATEGORY
FROM cte AS c
WHERE (c.UID, c.category) NOT IN (SELECT A.UID, A.CATEGORY
                                  FROM tableA AS A)
ORDER BY 1,2;

示例输入:

CREATE OR REPLACE TABLE tableA(uid INT, category TEXT)
AS
SELECT 1,'a' UNION ALL     
SELECT 1,'b' UNION ALL     
SELECT 1,'c' UNION ALL     
SELECT 2,'b' UNION ALL     
SELECT 2,'d';

CREATE OR REPLACE TABLE tableB(category TEXT)
AS
SELECT 'd' UNION ALL SELECT 'e';

Output:

在此处输入图像描述

union处理重复项

select uid, category
from t1
union 
select uid, category
from (select distinct uid from t1) t1 cross join t2
order by uid, category

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM