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