检查数据库以查看某些字段是否已存在

时间:2016-05-30 10:08:01

标签: mysql mysql-workbench

我有一个SQL查询,我试图找到状态不等于DEL的作业。 例如,乔布斯可能有许多状态,比如这份工作:

enter image description here

所以我试图创建一个查询来查找不包含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是否存在。

1 个答案:

答案 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的任何一行。