2016-09-15 84 views
0
組成

令s說我的兩個表項是由列A和B:關鍵部分匹配兩列

表1

Column A Column B 
1    1 
1    X 
2    2 
3    3 

表2

Column A Column B 
1    1 
2    2 
3    3 

怎麼辦我只選擇Table1中只有部分鍵匹配的行。我預期的結果將拉出行:

Column A Column B 
1    X 

基本上找到其中列A和B的比賽,但其中以下記錄如表2

回答

1
select * 
from tabl1 
join tabl2 
on (tabl1.cola == tabl1.cola and tabl1.colb <> tabl1.colb) 
or (tabl1.cola <> tabl1.cola and tabl1.colb == tabl1.colb) 
0

'left了」聯接表的「部分中的所有行「匹配

select t1.* 
from table1 t1 
join table2 t2 on ((t1.a = t2.a and t1.b <> t2.b) or (t1.a <> t2.a and t1.b = t2.b)) 
0

您可以使用解決這個問題NOT-EXISTS子查詢:

SELECT 
    input1.ColumnA,input1.ColumnB 
FROM 
    t1 
WHERE 
    NOT EXIST (
    SELECT * 
    FROM t2 
    WHERE t1.ColumnB = t2.ColumnB AND t1.ColumnA = t2.ColumnA) 

說明:您可以選擇table1中其值不包含在table2中的行。