查询一:select * from orders where orders_status=‘od’ and reship_type=0 or reship_type=1
查询二:select * from orders where orders_status=‘od’ and (reship_type=0 or reship_type=1)
这两个查询得到的结果不一样,原因在于and比or的优先级高,故在运行时从左往右进行
详解:
1. 第一个查询会先判断orders_status='od'是否满足,再判断reship_type=0是否满足,最后再进行or reship_type=1,
故在此查询中,只要orders_status='od'和 reship_type=0同为真,或者 reship_type=1为真即会返回结果
2. 第二个查询中,首先运行括号内的部分,即当reship_type=0 或者 reship_type=1中至少有一个为真 ,
并且orders_status='od' 也同时为真时才会返回结果。
注:sql查询遵循先判断优先级高的,再判断优先级低的。其中()、not、and、or由左到右,优先级越来越低