在sql中的where条件里,or与and的关系相当于小学里的加法与除法(或者乘法)的关系
1、例如 select * from user a where a.id=123 or a.id=456 相当于
select * from user a where a.id=123 的结果集 加上 select * from user a where a.id=456 的结果集
2、例如 select * from user a where a.sex='男' and a.age<18 相当于
select * from user a 的结果集 除以 条件“sex=‘男’” 的结果集
再用上面的结果集 接着除以 条件“age<18” 最后得到的结果集
3、例如 select * from user a where a.sex='男' and a.age<18 or a.id=123
就是 先算乘除法 再算加减法
select * from user a 除以 条件(sex='男' and age<18)
再加上
select * from user a where a.id=123
最后得到的结果集
4、例如 select * from user a where a.sex='男' and (a.age<18 or a.id=123)
这里就是有括号 先算括号里面的 select * from user a where a.age<18 的结果集 加上 select * from user a where a.id=123 得到的和
再除以条件“sex='男'” 最后得到的结果集
5、例4可以通过乘法分配率改写成 select * from user a where a.sex='男' and a.age<18 or a.sex='男' and a.id=123
6、例5可以通过提取公因式改写成例4的形式
select * from user a where a.sex='男' and (a.age<18 or a.id=123)
或者 select * from user a where (a.age<18 or a.id=123) and a.sex='男' (运用乘法交换律)