簡體   English   中英

Select 僅非重復行 (SQL)

[英]Select Only Non Duplicated Rows (SQL)

當與另一個 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 行已與 Table_2 中的多行連接,因此它被查詢拒絕。

我已經查看了在 SQL 表中查找重復值,並且已經能夠使用它來查找 Table_1 中的重復項,但不能查找已連接到多個 Table_2 行的行。 任何幫助將不勝感激。

您可以使用count()作為 window function:

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似乎不合適。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM