我有一个SQL查询,我试图找到状态不等于DEL
的作业。
例如,乔布斯可能有许多状态,比如这份工作:
所以我试图创建一个查询来查找不包含DEL
状态的作业。
select j.*
from job_new j
left join jobstat js on js.jobid=j.id
where js.Status NOT IN('DEL')
Group by j.ID
但是此查询仍会返回状态为DEL
的作业。我需要查询来查看jobstat
表中的每一行,并检查DEL
是否存在。
答案 0 :(得分:0)
问题在于您对同一作业有多个状态。这就是为什么状态不在(' DEL')将显示所有行,状态为!=' DEL'没有关于同一工作的其他行,其状态为=' DEL'。
这适用于您:
select j.*
from job_new j
left join (select jobid, sum(if(Status='DEL',1,0)) as DEL from jobstat group by jobid having DEL=0) as js on js.jobid=j.id
Group by j.ID
我们加入来自jobstat的准备好的选择,其中仅包含没有Status =' DEL'在jobstat的任何一行。