我的Postgresql TABLE看起来像
CREATE TABLE foo(man_id, subgroup, power, grp)
AS VALUES
(1, 'Sub_A', 4, 'Group_A'),
(2, 'Sub_B', -1, 'Group_A'),
(3, 'Sub_A', 5, 'Group_A'),
(4, 'Sub_B', 1, 'Group_A'),
(5, 'Sub_B', 6, 'Group_B'),
(6, 'Sub_B', 2, 'Group_B'),
(7, 'Sub_C', 2, 'Group_B');
(8, 'Sub_B', 2, 'Group_C');
我们有四列
man_id
,subgroup
,power
,grp
。我想获取一个subgroup
仅存在于一个grp
中的记录。在这里,您只能在Sub_A subgroup
中找到Group_A grp
。所以,我的预期结果应该是1, Sub_A, 4, Group_A
3, Sub_A, 5, Group_A
推荐的实现方法是什么?
MySQL解决方案也是可以预期的。
最佳答案
我认为您可以使用not exists
:
select f.*
from foo f
where not exists (select 1
from foo f2
where f2.subgroup = f.subgroup and
f2.grp <> f.grp
);