ID当SQL语句返回null时,SQL语句不工作

ID当SQL语句返回null时,SQL语句不工作,sql,sql-server,Sql,Sql Server,我有两个数据表,一个名为EmployeeDetails,其中包含列名称和ID,另一个名为EmployeeProject,其中包含列ProjectID和EmployeeID 现在我想得到所有与项目无关的员工。我试图将其作为一个存储过程编写,并使用参数@ProjectID来定义我想知道的项目,哪些员工没有被分配 我这样试过: SELECT DISTINCT(Temp.ID), Temp.AssignedDevelopers FROM (SELECT DISTINCT

我有两个数据表,一个名为EmployeeDetails,其中包含列名称和ID,另一个名为EmployeeProject,其中包含列ProjectID和EmployeeID

现在我想得到所有与项目无关的员工。我试图将其作为一个存储过程编写,并使用参数@ProjectID来定义我想知道的项目,哪些员工没有被分配

我这样试过:

SELECT DISTINCT(Temp.ID), 
    Temp.AssignedDevelopers 
FROM
    (SELECT DISTINCT 
         ED.ID, ED.Name As AssignedDevelopers, P.ProjectID 
     FROM 
         EmployeeDetails ED 
     LEFT JOIN 
         EmployeeProject P on ED.ID = P.EmployeeID) Temp
WHERE 
    ID <> (SELECT EmployeeID 
           FROM EmployeeProject 
           WHERE ProjectID = @ProjectID AND EmployeeID = Temp.ID)

问题是当没有人分配给项目时,我没有得到结果。

尝试使用NOT IN代替NOT IN


如果没有人被分配到项目中,您希望得到什么结果?没有结果不是告诉你没有人被分配吗?不,如果没有人被分配,我想得到所有的员工
SELECT DISTINCT(Temp.ID), Temp.AssignedDevelopers FROM (SELECT DISTINCT ED.ID, ED.Name As AssignedDevelopers, P.ProjectID FROM EmployeeDetails ED  LEFT JOIN EmployeeProject P on ED.ID=P.EmployeeID) Temp WHERE ID NOT IN (SELECT EmployeeID FROM EmployeeProject WHERE ProjectID=@ProjectID AND EmployeeID=Temp.ID)