在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='男' (運用乘法交換律)