mysql - 将两个键合并/合并为一个键并删除重复项
问题描述
我想使用 SQL(Toad for Oracle)合并两个表,将一个表中的一个键合并到主表的两个键,同时删除重复的条目。我想一个插图可以让您更好地理解我的问题:
数据框A:
Key1 Key2 ColA
1 2 1993
1 2 1992
1 4 1991
2 4 1990
2 5 1989
2 5 1988
3 5 1987
3 6 1986
3 6 1985
数据框 B:
Key1&2 ColB
1 Adress1
1 Adress1
1 Adress1
2 Adress2
2 Adress2
3 Adress3
3 Adress3
3 Adress3
4 Adress4
4 Adress4
5 Adress5
6 Adress6
6 Adress6
所需的数据框:
Key1 Key2 ColA ColB-1 ColB-2
1 2 1993 Adress1 Adress2
1 2 1992 Adress1 Adress2
1 4 1991 Adress1 Adress4
2 4 1990 Adress2 Adress4
2 5 1989 Adress2 Adress5
2 5 1988 Adress2 Adress5
3 5 1987 Adress3 Adress5
3 6 1986 Adress3 Adress6
3 6 1985 Adress3 Adress6
到目前为止,我尝试使用以下语句:
SELECT *
FROM A
LEFT JOIN B ON A.key1=B.key1&2
LEFT JOIN B ON A.key2=B.key1&2
但是,正如我所解释的,因为数据框 B 在其键中有重复的行,在我的输出中也有重复的行。希望它清楚。
谢谢,
KS
解决方案
这是你想要的吗?
SELECT A.*, B1.ColB, B2.ColB
FROM A LEFT JOIN
(SELECT DISTINCT key1&2, ColB
FROM B
) B1 ON A.key1 = B1.key1&2 LEFT JOIN
(SELECT DISTINCT key1&2, ColB
FROM B
) B2 ON A.key2 = B2.key1&2;
推荐阅读
- angular - 扩展动态加载的嵌套树节点时如何等待子加载完成
- css - flexbox 项目没有扩展到它们的最大宽度
- arrays - 想要根据用户输入为带有参数的单元格生成链接
- java - 通过循环创建多个按钮
- kubernetes - 如何让 AKS 上的两个 HAProxy 入口控制器之一处理单个入口?
- java - JMeter java.lang.VerifyError:无法从最终类继承
- reactjs - Graphql 端点在失眠症和邮递员中工作,但在尝试获取数据时不在反应应用程序上。有什么建议么?
- python - 发布相同的按摩时,Django 'UNIQUE 约束失败'
- python - 日期时间值不起作用,但手动输入确实起作用,即使日期时间值符合预期
- c# - 如何从用户提交到c#中的框架中获取图像?