select * from emp
where 1=1 and (ename='20') and (ejob <> 'clerk') or (eleader like '%a%')
如果这样写的话,加上or会使得and不起作用,因为一开始and筛选了数据,后来or有新增了已经筛选的数据;
正确做法:
where 1=1 and (ename='20') and (ejob <> 'clerk') or (eleader like '%a%' and ejob <> 'clerk' and ename='20')
这样or的时候会把过滤掉想要过滤的数据;
Mybatis-plus这样写:
queryWrapper.or(i->i.like("eleader","a").ne("clerk",'a'))