Sql 查找匹配多个行值的外键
我有一张这样的桌子Sql 查找匹配多个行值的外键,sql,oracle,Sql,Oracle,我有一张这样的桌子 person_id | department 1 | a 1 | b 2 | a 2 | c 3 | b 3 | a 并且希望查询返回属于部门a和部门b的所有人员id。我想这应该是一个类似于 select person_id from table group by person_id having .... 但我不太明白。
person_id | department
1 | a
1 | b
2 | a
2 | c
3 | b
3 | a
并且希望查询返回属于部门a和部门b的所有人员id。我想这应该是一个类似于
select person_id from table group by person_id having ....
但我不太明白。有人知道我怎么做吗
编辑:我想我可以做到以下几点。但这似乎是一个黑客
select person_id from table where department='A' or department='B'
group by person_id having count(1) > 1
注意:只有当一个人可以多次成为同一部门的成员时,才需要DISTINCT。您也可以通过子查询实现这一点:
SELECT person_id
FROM table t1
WHERE t1.department = 'a'
AND EXISTS (SELECT 1
FROM table t2
WHERE t2.department = 'b'
AND t1.person_id = t2.person_id`)
SELECT person_id
FROM table t1
WHERE t1.department = 'a'
AND EXISTS (SELECT 1
FROM table t2
WHERE t2.department = 'b'
AND t1.person_id = t2.person_id`)