我有一个用例,其中有一个表,例如:
key | attribute |
key1 | x |
key1 | y |
key2 | z |
key2 | z |
有没有一种方法可以在此查询中找到具有多个唯一属性的所有键?对于此示例,我只想返回key1,因为它具有x和y属性,并且x和y不同,其中key 2仅具有一个唯一的属性。
答案 0 :(得分:4)
是的。只需使用group by
和having
:
select key
from t
group by key
having min(attribute) <> max(attribute);
如果您想要详细的键/属性对,那么我建议exists
:
select t.*
from t
where exists (select 1
from t t2
where t2.key = t.key and t2.attribute <> t.attribute
);