关于and or的优先级的一个小问题
2013-01-28 22:07
549 查看
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 )
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 )
相关文章推荐
- 数据更新:updata 逻辑运算符的优先等级问题 not>and>or 删除一个表中的内容 约束
- 关于 空格实体在最新的IE、Firefox和Google Chrome浏览器中解析宽度不一致问题的解决
- hdu1005&&nyoj-427 一个关于循环节的问题
- 关于 adding a new disk or removi…
- 一个典型的关于java(Overriding && Overloading)问题
- 请教:SQL语句中OR和AND的优先级问题
- 关于ImageIO: CGImageRead_mapData 'open' failed ' XXX error = 2 (No such file or directory)问题
- 关于一个int *ptr=(int *)(&a+1)问题的探讨
- 简单的问题,用类创建一个对象error C2380: type(s) preceding 'Complex' (constructor with return type, or illegal redefinition of current class-n
- 关于在eclipse中运行出错的一个小问题 Unknown column 'android' in 'where clause'
- 关系运算符:or、and的优先级问题
- android初学------关于Eclipse adb 问题"you must restart adb and eclipse“
- 奇怪的编码,奇怪的显示——一个关于 的故事
- 关于“fatal error C1083: Cannot open include file: 'StdAfx.h': No such file or directory”的问题
- 关于MATLAB函数不可用问题。??? Undefined function or method 'minfo' for input arguments of type 'double'.
- 关于一个int *ptr=(int *)(&a+1)问题的探讨
- 关于一个简单ATM系统的UML建模——问题描述&词汇表&领域类图
- 关于一个int *ptr=(int *)(&a+1)问题的探讨
- 关于 Union,Struct and Class的大小计算问题的思考(转)&union和struct类型的大小计算(转)
- 关于SpringMVC的rest的一个问题: HTTP Status 405 - JSPs only permit GET POST or HEAD.。