sql 分組后根據條件去掉整組


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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM