1. 程式人生 > 其它 >sql中where條件裡的or與and的關係

sql中where條件裡的or與and的關係

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