关于and or的优先级的一个小问题
来源:互联网 发布:利是说小程序软件开发 编辑:程序博客网 时间:2024/06/01 12:28
SQL语句如下:
select * from LOAN_BACK_LIBRARY where LIBRARY_ID=1 or LIB_ID=1 andSTATUS=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 andSTATUS=3
修改为:
select * from LOAN_BACK_LIBRARY where STATUS=3 and LIBRARY_ID=1 orLIB_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 orLIB_ID=1 )
select * from LOAN_BACK_LIBRARY where LIBRARY_ID=1 or LIB_ID=1 andSTATUS=3
我想要的结果的条件是:1. LIBRARY_ID=1 或者 LIB_ID=1
但是结果并非如此,出现了STATUS!=3的结果,但是却匹配了 LIBRARY_ID=1 or LIB_ID=1
为什么呢
原来这个SQL的执行是这样的:
select * from LOAN_BACK_LIBRARY where LIBRARY_ID=1 or LIB_ID=1 andSTATUS=3
修改为:
select * from LOAN_BACK_LIBRARY where STATUS=3 and LIBRARY_ID=1 orLIB_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 orLIB_ID=1 )
- 关于and or的优先级的一个小问题
- AND与OR的优先级
- AND与OR的优先级
- not and or的优先级
- not and or的优先级
- not and or的优先级
- not and or的优先级
- Sql Server中and和or的优先级问题
- 数据库sql中and和or优先级的问题
- 关系运算符:or、and的优先级问题
- python中not,and,or的优先级问题及用法
- AND OR的执行顺序和优先级
- ORACLE中AND与OR的优先级
- 一个小问题引出的有关CSS优先级的思考
- SQL中AND和OR的运算顺序, AND优先级>OR优先级
- [Python]计算闰年时候出现的and和or优先级的问题以及短路逻辑
- 一个常见的优先级问题
- 关于CSS优先级的问题
- 归档日志写满fra导致import操作挂…
- ORA-01591: lock held by in-doubt…
- 11gR2 如何诊断节点重启问题 <from…
- 2012年8月版:Oracle数据库技术更新…
- 区分一个参数是动态的还是静态
- 关于and or的优先级的一个小问题
- PGA 内存自动管理
- Incremental backup:
- 控制文件损坏丢失处理方式
- 2012年09月10日
- undo_tablespace
- ORACLE 安全备份概念(secure back…
- statistic_level
- 服务名、实例名和数据库名 <转载>