sql - SQL 语句返回 null 时 ID<>SQL 语句不起作用
问题描述
我有两个数据表,一个EmployeeDetails
用列Name
和调用,一个用列和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 而不是 <>
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)
推荐阅读
- flutter - Flutter - Transform.scale 小部件的大小在其子级缩放时不会改变
- bigbluebutton - 如何修复 BigBlueButton 中的错误“无法连接到配置的主机名/IP 地址”?
- python - 不包括具有“NoneType”成员的子元组的父集合
- sed - 如何删除每行可变数字前后的所有内容?
- python - 如何在 Pytorch 中进行三次样条插值和积分
- azure-data-factory - Azure 数据工厂 - 复制数据 - 将值添加到输出
- lubridate - 如何在R中将时间序列“POSIXct”转换为日期格式
- python - get_attribute 中的硒
- java - 如何使用 Java NIO 包并行访问多个文件?
- java - 如何修复它,NumberFormatException:对于输入字符串:“[D@548b7f67”