SQL中not and or优先级问题
2014-08-06 16:21
776 查看
SQL中 not and or优先级问题
刚刚在项目中遇到这样一个问题,SQL语句如下:
我想要的结果的条件是:1. LIBRARY_ID=1 或者 LIB_ID=1
2.STATUS=3
但是结果并非如此,出现了STATUS!=3的结果,但是却匹配了 LIBRARY_ID=1 or LIB_ID=1
为什么呢
原来这个SQL的执行是这样的:
修改为:
依然不正确
呵呵,发现问题了:
where 后面如果有and,or的条件,则or自动会把左右的查询条件分开,即先执行and,再执行or。原因就是:and的执行优先级最高!
关系型运算符优先级高到低为:not and or
问题的解决办法是:
用()来改变执行顺序!!!!
上面我所需要的SQL语句是这样的
这样就是完美的答案了!!!!
来自 : 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 )
这样就是完美的答案了!!!!
来自 : http://www.2cto.com/database/201203/122589.html
相关文章推荐
- 在T-SQL中注意and和or的优先级问题
- 数据库sql中and和or优先级的问题
- 请教:SQL语句中OR和AND的优先级问题
- sql关系型运算符优先级高到低为:not >and> or
- sql关系型运算符优先级高到低为:not >and> or
- sql where and or优先级 待验证
- sql中and的优先级比or高
- SQL 复合查询条件(AND,OR,NOT)对NULL值的处理
- oracle中逻辑运算符(not,and,or)及其优先级
- SQL语句AND 和 OR执行的优先级
- not and or的优先级
- Sql Server中and和or的优先级问题
- SQL 复合查询条件(AND,OR,NOT)对NULL值的处理方法
- Oracle SQL逻辑操作符and、or与not
- [Python]计算闰年时候出现的and和or优先级的问题以及短路逻辑
- SQL中and与or优先级比较
- SQL---DML---WHERE过滤数据のAND,OR,IN,NOT的高级过滤
- sql语句and及or的优先级
- sql的where子句中包含多个and和or是计算顺序问题
- Cannot connect to WMI provider.You do not have permission or the server is unreachable.Note that you can only manager SQL Server 2005 and later version with SQL Server Configuration Manager.Invalid namespace [0x8004100e]