如何在INNER JOIN中找到哪些行完全匹配以及哪些行有多个匹配?
SELECT A.Col1, B.Col2 FROM A INNER JOIN B
ON A.Col3 = B.Col3 AND A.Col4 = B.Col4;
正如我们所知INNER JOIN返回的行最少匹配一次,所以再次重申我的qustion,如何找到哪些行匹配一次以及哪些行有多个匹配。
此致 萨钦
答案 0 :(得分:1)
您可以使用窗口函数来计算来自B
的记录数:
SELECT A.Col1, B.Col2, Count(*) OVER (PARTITION BY b.col3, b.col4) as bcount
FROM A
INNER JOIN B
ON A.Col3 = B.Col3 AND A.Col4 = B.Col4;
答案 1 :(得分:0)
在JNevill的输入的帮助下,这是我正在寻找的一个工作示例。我想再次感谢JNevill。
create table A (col1 number, col3 number, col4 number, col5 number, col6 number);
create table B (col2 number, col3 number, col4 number, col5 number, col6 number);
insert into A values (1,2,3, 4, 5);
insert into A values (2,3,4,5,6);
insert into B values (3,4,5,6,7);
insert into B values (4,2,3,4,5);
insert into B values (5,2,3,8,9);
insert into B values (6,3,4,5,6);
insert into B values (7,3,4,5,6);
SELECT Col1 FROM(
SELECT A.Col1,B.Col2, A.Col3, A.Col4, A.Col5 ,A.Col6, Count(*) OVER (PARTITION BY B.col3, B.col4, B.col5, B.col6) as bcount
FROM A
INNER JOIN B
ON A.Col3 = B.Col3 AND A.Col4 = B.Col4 AND A.Col5 = B.Col5 AND A.Col6 = B.Col6) WHERE BCOUNT = 1;
所以,我正在寻找表A中的一列,它与表B中的所有连接列完全匹配。
问候。