SQL Server:检索外键的记录,该外键与同一个表中的另一个外键不具有公共值

时间:2016-11-07 13:37:21

标签: sql sql-server join subquery

我有一个具有以下结构的表:

Id      MemberId    Field1      Field2      Data
--------------------------------------------------
1       1           12          abc         1232
2       2           13          asl         234
3       2           12          abc         2345
4       1           3           sd          sfsd
5       1           5           45r         ffgf

根据参数member1member2,我必须返回member1Field1Field2中不具有相同值的所有ID member2member1 = 1 member2 = 2

输出示例:

4
5

预期产出:

Field1

因为第一条记录和第三条记录的Field2#tempTable值相同。

如何实现这一目标?

我正在使用SQL Server 2014。

编辑:我不允许使用游标和临时表(如tours/cycle%20tour.htm cycle-tours.html ),我只能使用表变量

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以使用not exists

select t.*
from t
where not exists (select 1
                  from t t2
                  where t2.member1 = t.member1 and
                        t2.id <> t.id and
                        (t2.field1 = t.field1 or t2.field2 = t.field2)
                  );