Welcome 微信登录

首页 / 数据库 / MySQL / SQL中 and or优先级问题

刚刚在项目中遇到这样一个问题,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 )这样就是完美的答案了!!!!Oracle解锁命令SQL 查询本周本月问题相关资讯      SQL 
  • SQL 新手指南  (09/10/2015 10:57:53)
  • SQL导入txt以及SQL中的时间格式操  (01/25/2015 11:35:04)
  • SQL 事务及实例演示  (08/12/2014 10:36:37)
  • SQL 中的正则函数  (06/28/2015 15:59:48)
  • SQL 集合(笔记)  (01/15/2015 20:19:06)
  • Oracle shell调用SQL操作DB  (02/03/2014 10:48:18)
本文评论 查看全部评论 (0)
表情: 姓名: 字数