此SQL语句不返回任何结果:
SELECT [AutoNo], [PersonID]
FROM [PersonTBL]
WHERE PersonID NOT IN (SELECT PersonID
FROM FollowUpTBL
WHERE FDate > '09/24/2014')
虽然这个返回预期结果:
SELECT [AutoNo], [PersonID]
FROM [PersonTBL]
WHERE (SELECT TOP 1 FDate
FROM FollowUpTBL
WHERE FollowUpTBL.PersonID = PersonTBL.PersonID
ORDER BY FDate DESC) < '09/24/2014'
我需要在2014年9月24日之后返回所有有任何后续行动的人,为什么第一个SQL查询不起作用?第二个查询返回真实数据!
有没有办法让第一个查询返回相同的结果(我的意思是使用&#34; IN(select)&#34;)?
答案 0 :(得分:1)
我需要让所有谁拥有在'09 / 24/2014之后进行任何跟进',为什么第一个没有用呢!
您的第一个声明是在NOT IN
声明中使用WHERE
子句。这将使你完全与你想要的相反。
答案 1 :(得分:1)
您的第一个查询目前是为了从PersonTBL中提取任何记录,他们在9/24/2014之后没有预约。根据您所说的内容,你的NOT IN应该只是一个IN。
答案 2 :(得分:1)
我发现了故障,问题是因为有一些FollowUpTBL记录插入了PersonID = null,所以要修复第一个sql查询并让它工作,我必须修改它如下:
SELECT [AutoNo], [PersonID]
FROM [PersonTBL]
WHERE PersonID NOT IN (
SELECT PersonID
FROM FollowUpTBL
WHERE FDate > '09/24/2014'
and PersonID Is Not Null
)
所以,添加“和PersonID不是空”修复问题,谢谢,