由两列组成的键的部分匹配

时间:2016-09-15 22:39:15

标签: sql

假设我的两个表键由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中的后续记录是“剩余的”

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

在“部分”匹配

上加入表格
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))

答案 2 :(得分: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中的行。