我有两个表,称之为a和b,其中a与一对多关系中的b相关。我想从表a中选择任何行,其中表b中的任何许多相关记录都符合条件。基本连接不起作用,因为这将为表b中匹配的每一行返回一个结果 - 我只想为表a中的每一行提供一个结果,其中一个或多个相关记录匹配。
为简化示例,假设我有一个表部门和相关表员工,每个员工都有一个部门,但每个部门显然可以有多个员工。我想要一个查询,每个部门会给我一行,其中一个或多个员工符合给定的标准 - 比如说有一个或多个员工的部门已经赢得了“本月员工”。我该怎么做?感谢。
答案 0 :(得分:2)
SELECT * FROM department d
WHERE EXISTS (
SELECT * FROM employee e
JOIN badges b ON b.person_id = e.person_id AND b.badge = 'EotM'
WHERE e.dep_id = d.dep_id
AND e.gender = 'F'
);
答案 1 :(得分:1)
听起来像子查询的工作。类似于:从*中选择*,其中id为(从Emp中选择deptID,其中wasEOTM = true);应该做的工作。
答案 2 :(得分:1)
select distinct on (d.id)
d.name
from
department d
inner join
employee e on d.id = e.department_id
where e.age between 60 and 65
如何按任何栏目订购:
select *
from (
select distinct on (d.id)
d.*
from
department d
inner join
employee e on d.id = e.department_id
where e.age between 60 and 65
) s
order by name