sql中 and or优先级问题,where 后面如果有and,or的条件,则or自动会把左右的查询条件分开,即先执行and,再执行or。原因就是:a
刚刚在项目中遇到这样一个问题,sql语句如下:
select * from loan_back_library where library_id=1 or lib_id=1 and status=3
我想要的结果的条件是:1. library_id=1 或者 lib_id=1
2.status=3
但是结果并非如此,出现了status!=3的结果,但是却匹配了 library_id=1 or lib_id=1
为什么呢
原来这个sql的执行是这样的:
select * from loan_back_library where library_id=1 or lib_id=1 and status=3
修改为:
呵呵,发现问题了:
where 后面如果有and,or的条件,则or自动会把左右的查询条件分开,即先执行and,再执行or。原因就是:and的执行优先级最高!
关系型运算符优先级高到低为:not and or
问题的解决办法是:
用()来改变执行顺序!!!!
上面我所需要的sql语句是这样的
这样就是完美的答案了!!!!
,