如果不与其他记录共享列值,请选择一个记录

时间:2018-10-02 16:04:11

标签: sql

让我们说一下,我有一个以下形式的表格,

X | Y | Z
_________
1   A   3
1   B   3
1   C   4
1   B   4

,我想查询包含B的记录,但只查询那些包含B且与特定记录不共享公共Z字段值的记录,在这种情况下说A。因此,理想情况下,查询将返回记录“ 1 B 4”。

1 个答案:

答案 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)上使用索引也可能是最快的方法。