想象一下我有两个表,“部门”表和“员工”表。此员工表有一个“类别”列。
我想查询选择只有特定类型员工的部门。
谢谢你。
您需要在将这两个表链接在一起的任何列上执行部门和员工表的连接。在 where 子句中,您将指定所需的员工类型。
这将为每个员工返回一行,这可能不是您想要的。您可以在部门表中查找的重要列上使用 distinct 函数来获得最终答案。
select distinct dept_id
from employee
where category = 'cat1'
and dept_id not in (select distinct dept_id
from employee
where dept_id <> 'cat1');
SELECT dept_id
FROM departments
WHERE dept_id NOT IN
(SELECT DISTINCT dept_id
FROM employee
WHERE category_id != @specified_category)
此查询假定没有没有员工的部门,因为它也会返回那些空部门。如果这是一个问题,您可以添加:
AND dept_id IN (SELECT distinct dept_id FROM employee)
Select d.id_department from departments d where not exists
(Select e.id_employee from employees e where e.category!=your_category and e.id_department=d.id_department)
您还需要验证该部门是否有员工。