oracle的and与or操作--and的筛选不起作用

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')) 

猜你喜欢

转载自blog.csdn.net/pshdhx/article/details/108392409