[英]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.