SQL中 and or优先级问题
来源:互联网 发布:linux rpm命令 编辑:程序博客网 时间:2024/05/16 01:38
原文:http://www.2cto.com/database/201203/122589.html
刚刚在项目中遇到这样一个问题,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
修改为:
select * from LOAN_BACK_LIBRARY where STATUS=3 and LIBRARY_ID=1 or LIB_ID=1 依然不正确
呵呵,发现问题了:
where 后面如果有and,or的条件,则or自动会把左右的查询条件分开,即先执行and,再执行or。原因就是:and的执行优先级最高!
关系型运算符优先级高到低为:not and or
问题的解决办法是:
用()来改变执行顺序!!!!
上面我所需要的SQL语句是这样的
select * from LOAN_BACK_LIBRARY where STATUS=3 and (LIBRARY_ID=1 or LIB_ID=1 )
这样就是完美的答案了!!!!
- SQL中 and or优先级问题
- SQL中 and or优先级问题
- SQL中 and or优先级问题
- SQL中 and or优先级问题
- SQL中 and or优先级问题
- SQL中 and or优先级问题
- SQL中 and or优先级问题(转)
- Sql Server中and和or的优先级问题
- 数据库sql中and和or优先级的问题
- SQL中and与or优先级比较
- SQL中逻辑运算 and or优先级
- SQL语句中 and or执行优先级
- SQL中AND和OR的运算顺序, AND优先级>OR优先级
- sql中and的优先级比or高
- SQL语句中AND OR运算符优先级
- python中not,and,or的优先级问题及用法
- SQL语句and、or优先级比较
- sql关系运算符优先级and>or
- 完全卸载oracle11g步骤
- 黑马程序员--OC自学笔记---06简单电影购票系统
- 比较完善的限制中文输入字长的方法
- phonegap菜鸟入门小结
- CSS盒子,line-height,padding,margin,background,border
- SQL中 and or优先级问题
- 集合
- Play Framework 报错 java.sql.SQLException: Connection is closed!
- CC2530 wireshark抓包 sniffer分析6lowpan RPL路由神器
- ElasticSearch学习8_在elasticsearch.yml中设置gateway.expected_nodes控制集群数据恢复
- Hibernate各种主键生成策略与配置详解
- 解析Cloudera Manager内部结构、功能包括配置文件、目录位置等
- mysql权限管理
- Hibernate总结