SQL Complex连接未给出明显结果

C锐化

我有两张桌子:

表格1:-

ID1

1
1
1
1
4
5

表2:-

Id2

  2
  2
  1
  1
  1
  8

我想通过联接显示table1的ID1中存在的table2的所有ID2

我用了 :-

select ID2 from Table2 t2 left join Table1 t1
on t2.Id2=t1.Id1

但这给出了重复的结果:

Id2
1
1
1
1
1
1
1

它应该只向我显示1的3倍,因为它在表2中显示为3倍。

请帮忙。

菲利克斯·帕米坦(Felix Pamittan)

您将值1与4行Table1和3行匹配Table2这就是为什么看到12行的原因。您需要其他JOIN条件。您可以添加ROW_NUMBER和执行INNER JOIN以达到所需的结果。

WITH Cte1 AS(
    SELECT *,
        rn = ROW_NUMBER() OVER(PARTITION BY Id1 ORDER BY (SELECT NULL))
    FROM Table1
),
Cte2 AS(
    SELECT *,
        rn = ROW_NUMBER() OVER(PARTITION BY Id2 ORDER BY (SELECT NULL))
    FROM Table2
)
SELECT c2.Id2
FROM Cte2 c2
INNER JOIN Cte1 c1
    ON c1.Id1 = c2.Id2
    AND c1.rn = c2.rn

但是,无需使用即可获得所需的结果JOIN

SELECT * 
FROM Table2 t2 
WHERE EXISTS(
    SELECT 1 FROM Table1 t1 WHERE t1.Id1 = t2.Id2
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章