在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.***='男' and a.age<18 相當於
select * from user a 的結果集 除以 條件「***=『男』」 的結果集
再用上面的結果集 接著除以 條件「age<18」 最後得到的結果集
3、例如 select * from user a where a.***='男' and a.age<18 or a.id=123
就是 先算乘除法 再算加減法
select * from user a 除以 條件(***='男' and age<18)
再加上select * from user a where a.id=123
最後得到的結果集
4、例如 select * from user a where a.***='男' and (a.age<18 or a.id=123)
這裡就是有括號 先算括號裡面的 select * from user a where a.age<18 的結果集 加上 select * from user a where a.id=123 得到的和
再除以條件「***='男'」 最後得到的結果集
5、例4可以通過乘法分配率改寫成 select * from user a where a.***='男' and a.age<18 or a.***='男' and a.id=123
6、例5可以通過提取公因式改寫成例4的形式
select * from user a where a.***='男' and (a.age<18 or a.id=123)
或者 select * from user a where (a.age<18 or a.id=123) and a.***='男' (運用乘法交換律)
SQL中on條件與where條件的區別
資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。在使用left jion時,on和where條件的區別如下 1 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。2 where條件是在臨時表生成好後,再對臨時表...
SQL 中 on 條件與 where 條件的區別
資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。在使用left join時,on和where條件的區別如下 1 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。2 where 條件是在臨時表生成好後,再對臨時...
SQL中on條件與where條件的區別
資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。在使用leftjion時,on和where條件的區別如下 1 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。2 where條件是在臨時表生成好後,再對臨時表進...