将两个键合并/合并到一个键并删除重复项

时间:2019-06-05 14:11:43

标签: mysql sql toad

我想使用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

1 个答案:

答案 0 :(得分:0)

这是您想要的吗?

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;