2013-06-13 125 views
0
Table1 | Table2 
S1  | S3 
S2  | S3 
S3  | S9   
S4  | S2 
     | S5 

我有一列這兩個表。我想得到他們與重複值的交集。即我想交集的結果是(S2,S3,S3)SQL查詢來獲取重複的共同價值觀

如何使用SQL oracle查詢得到這個結果?
我對此很新穎。謝謝!

回答

1
select table2.column2 
from table2 
join table1 on table2.column2 = table1.column1 
order by table2.column2 

或替代,可能更容易理解,但不太高性能(是一個真正的詞?):

select table2.column2 
from table2 
where column2 in (select column1 from table1) 
order by table2.column2 

這兩個查詢不相當相同:

  • 如果table1具有相同的值多次,第一次將返回多行table2多次
  • s的Econd將返回表2中的每一行最多一次,即使表1列出了他們多次

要使用的一個取決於哪個更適合你(即什麼是「重複值」是指完全一致)

+0

我要指出的是,根據您的實際數據,這兩個查詢可能會產生不同的結果。我懷疑第一個查詢會產生你想要的結果(假設我理解正確),第二個查詢可能產生所需的結果。 – sgeddes

+0

@sgeddes好點 - 它們不完全相同 - 我已經記錄了答案中的差異。很難知道什麼是想要的,什麼「重複」*實際上*意味着在問題中缺少足夠的信息。這取決於如果第一個表只有唯一的值(我的錢是在第二個查詢) – Bohemian

+1

我試着用第二個查詢(更容易理解,如你所說),它適用於我。謝謝 ! – Margi