GROUP BY t.Id,ti.`Status`
HAVING (count(ti.`Status`) != COUNT(IF(ti.`Status` = 16,1,NULL)))
AND (COUNT(IF(ti.`Status` IN(2,4,8), 1, null)) < 1)
分組后
如果這組內的status都是16 那么這組過濾掉
如果這組內status包含包含 2 4 8 那么這組過濾掉
group by job.Id having count(if(o.Status in (10,20,30,40) ,1, null)) < 1
group by job.Id having count(if(o.Status in (50) ,null, 1)) < 1
主要思路是count(null) having 子句的作用是篩選滿足條件的組,即在分組之后過濾數據
count(null)返回0 count(1)返回分組后數量 當組內滿足時 為count(1) 與 1 比較 肯定這組都為false 當組內條件不滿足時為count(null)