[英]SQL join columns of two tables on unique key
假设我有两个表A和B,它们的唯一键如下所示(实际表中当然有更多的行和列):
Unique_Key A B
____________________________
ABC 1 2
BCD 5 6
DDD 10 11
Unique_Key C D
____________________________
ABC 6 7
BCD 8 9
DDD 100 200
我想在Unique_Key
上Unique_Key
两个表的列,以产生以下输出:
Unique_Key A B C D
_________________________________________________
ABC 1 2 6 7
BCD 5 6 8 9
DDD 10 11 100 200
我已经试过了:
select
[A], [C]
from
tableA r with (nolock) join tableB l with (nolock) on r.Unique_Key =
l.Unique_Key
它的工作原理非常好,因为它确实合并了表格,但是却产生了重复的行,我不确定为什么。 从本质上讲,这是我要避免的-重复行。
谢谢!
您可以使用在这种情况下效果很好的连接命令。
SELECT A.Unique_Key, A.Atable_Column1, A.Atable_Column2, B.Btable_Column3, B.Btable_Column4
From Table1 A inner join Table2 B
on A.Unique_Key = B.Unique_Key
您可以通过聚合使用分组
select
r.Unique_Key,max([A]), max([C])
from
tableA r join tableB l on r.Unique_Key =
l.Unique_Key
group by r.Unique_Key
如果unique_key
在每个表中确实是唯一的,那么它将执行您想要的操作而不会产生重复项:
select r.unique_key, r.a, r.b, l.c, l.d
from tableA r join
tableB l
on r.Unique_Key = l.Unique_Key;
如果重复,则密钥不是唯一的。 您可以通过运行以下命令来识别重复的密钥:
select unique_key
from tableA r
group by unique_key
having count(*) > 1;
和:
select unique_key
from tableB l
group by unique_key
having count(*) > 1;
根据名称的选择,您可能需要修复基础数据。
tableA.A
和tableB.C
都不是唯一的,所以我理解这一点。
同
Unique_Key | A | B -----------+---+-- AAA | 1 | 1 BBB | 1 | 2 CCC | 2 | 3
和
Unique_Key | C | D -----------+---+-- AAA | 1 | 1 BBB | 1 | 2 CCC | 4 | 5
你会得到
A | C --+-- 1 | 1 1 | 1 2 | 4
你想在哪里
A | C --+-- 1 | 1 2 | 4
为此使用DISTINCT
:
select distinct tablea.a, tableb.c
from tablea
join tableb on tablea.unique_key = tableb.unique_key;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.