仅选择不重复的行(sql)

pwuypxnk  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(448)

当与另一个sql表进行左连接时,我的一些左表行被复制,并与多个右表行连接,因为在我的用法中,这意味着这些行是不明确的行,我需要能够过滤彼此具有相同值的行。
ie公司

Select Table_1.Id, Table_1.Value, Table_2.Id, Table_2.Value
From Table_1 Left Join Table_2 on Table_1.Value = Table_2.Value

导致:

Table_1.Id,     Table_1.Value,  Table_2.Id,     Table_2.Value
1               T               2               T
2               G               3               G
2               G               5               G
3               K               1               K
4               M               4               M

但是,我想创建一个查询,结果是:

Table_1.Id,     Table_1.Value,  Table_2.Id,     Table_2.Value
1               T               2               T
3               K               1               K
4               M               4               M

其中,由于第2行已与表2中的多行联接,因此将从查询中拒绝该行。
我已经研究过在sql表中查找重复值,并且能够使用它来查找表1中的重复值,而不是连接到多个表2行的行。任何帮助都将不胜感激。

rfbsl7qr

rfbsl7qr1#

你可以用 count() 作为窗口函数:

Select t1.Id, t1.Value, t2.Id, t2.Value
From Table_1 Join
     (select t2.*,
             count(*) over (partition by t2.value) as cnt
      from Table_2 t2
     ) t2
     on t2.Value = t1.Value
where t2.cnt = 1;

根据你的样本数据, left join 似乎不合适。

相关问题