SQL中 and or优先级问题
程序员文章站
2024-02-13 14:46:28
...
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语句是这样的
推荐阅读
-
浅谈SQL Server查询优化器中的JOIN算法
-
SQL Mode及相关问题_MySQL
-
php中header("Location:xxx.php")跳转问题
-
为了防注入,对sql查询语句加转义addslashes后,语句语法出现问题
-
使用Yii框架php导入excel文件中的编码问题
-
mysql中主从复制延迟的问题_MySQL
-
在PHP中PDO解决中文乱码问题的一些补充_PHP
-
新浪sae环境,php连接远程sql2008服务器有关问题
-
我在开发AJAX过程中遇到的问题及解决方案,分享给大家~ Ajax浏览器IEjQueryDojo
-
将excel导入sqlserver2008的表中引发的问题