让我们说一下,我有一个以下形式的表格,
X | Y | Z
_________
1 A 3
1 B 3
1 C 4
1 B 4
,我想查询包含B的记录,但只查询那些包含B且与特定记录不共享公共Z字段值的记录,在这种情况下说A。因此,理想情况下,查询将返回记录“ 1 B 4”。
答案 0 :(得分:4)
您可以使用not exists
:
select t.*
from t
where t.y = 'B' and
not exists (select 1 from t t2 where t2.z = t.z and t2.y = 'A');
在(z, y)
和(y)
上使用索引也可能是最快的方法。