如何在子表值的基础上从父表中跳过id

时间:2012-10-31 09:46:25

标签: sql sql-server sql-server-2008

我有两张桌子

table1  

ides    name

1001    AA
1002    BB
1003    CC


table2      

ides    posi    cwawr

1001    2   xyz
1001    4   lmn
1001    6   abc
1002    2   ijk
1002    4   lmo
1002    6   pqr
1003    2   xyz
1003    4   sfs

在上面两个表中我想选择table1的所有ides,其中posi不等于2而cwawr不等于xyz。例如1001 posi有2并且cwawr有xyz所以这个id应该被跳过。同样1003也有posi值2和cwawr有xyz所以它也应该跳过。

所以结果应该是

1002 

提前致谢, Eshwer

1 个答案:

答案 0 :(得分:4)

经典不存在(a.k.a。更正式地“anti semi join”和relationally

SELECT
   *
FROM
   Table1 T1
WHERE
   NOT EXISTS (SELECT *
       FROM
         Table2 T2
       WHERE
         T2.posi = 2 AND T2.cwawr = 'xyz'
         AND
         T2.ides = T1.ides)