mysql小结

一定记得,在sql中,筛选出需要的数据,永远比筛选掉不需要的数据好筛选的多

就是,当需要筛选出同时满足一个表中的两个字段的两个条件的数据,就不能筛选掉不需要的数据,需要筛选出自己需要的数据,

将不需要的数据排除在外。

例如:

昨天做的一个需求,在服务商的申请结算的单据表中,应为需要数据备份,所以需要筛选掉当fm.audit_state=1 && fm.exception_second_submit=1的数据,

fm.exception_second_submit=1 这个筛选条件是二次审核提交的状态

这样的话,想着去筛选掉这条数据就不现实

写where语句

where fm.audit_state!=1 and fm.exception_second_submit!=1

这样的话就会把正在审核的单据过滤掉,直接写

where fm.exception_second_submit!=1

的话也不行,fm.exception_second_submit=1 这个筛选条件是二次审核提交的状态,所以直接 !=1进行过滤的话,会把二次提交的也过滤掉

所以直接通过过滤出需要的数据的方法才能实现

sql写法为:

       where fm.settlement_id = #{settlementId,jdbcType=INTEGER}
        and ((fm.AUDIT_STATE in (1,2,3,4) and fm.exception_second_settlement is null ) or
        (fm.AUDIT_STATE in (1,2,3,4) and (fm.exception_second_settlement in (2,3))))

过滤出 fm.AUDIT_STATE 为状态  (1,2,3,4) ,(fm.exception_second_settlement in (2,3)的数据

posted @ 2018-07-17 09:36  huanghaunghui  阅读(126)  评论(0编辑  收藏  举报