Sql server 如何在列不等于值的联接表上进行筛选?

Sql server 如何在列不等于值的联接表上进行筛选?,sql-server,Sql Server,我有两张表,即部门和员工。我想要一个部门名称,其员工不是程序员 下面是我对这个问题的看法 我希望输出为HR,但它同时显示HR和it。我试过这个,但不起作用 SELECT DISTINCT dept_name FROM Departments INNER JOIN Employees ON not Emp_Skill='Programmer' AND Deptid = Employees.EDept_id; 您可以在中使用 SELECT Dept_name FROM depart

我有两张表,即部门和员工。我想要一个部门名称,其员工不是程序员

下面是我对这个问题的看法

我希望输出为HR,但它同时显示HR和it。我试过这个,但不起作用

SELECT DISTINCT dept_name 
FROM Departments INNER JOIN Employees 
     ON not Emp_Skill='Programmer' AND Deptid = Employees.EDept_id;

您可以在中使用

SELECT Dept_name 
FROM departments 
WHERE Deptid NOT IN (SELECT edept_id FROM Employees WHERE emp_skill ='Programmer')

这将只选择没有程序员员工的部门。

谢谢!它可以工作,但是你能给我解释一下它可以工作吗?@PrajaktaKale,子查询将为你提供程序员员工的部门ID。因此将只选择不在子查询中的部门