`
jinvasshole
  • 浏览: 772927 次
文章分类
社区版块
存档分类
最新评论

SQL中 and or优先级问题

 
阅读更多
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

这样就是完美的答案了!!!!



分享到:
评论

相关推荐

    关于SQL语句中的AND和OR执行顺序遇到的问题

    问题的根结在SQL语句的AND和OR关键字的执行优先级问题。下面就针对这个问题进行一下测试。 场景 1、有一张学生表Student,表字段包括Id(用户主键)、Name(用户名)、Grade(年级)、Class(班级)、Sex(性别)。...

    mysql条件查询and or使用方法及优先级实例分析

    本文实例讲述了mysql条件查询and or使用方法及优先级。分享给大家供大家参考,具体如下: mysql and与or介绍 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。 使用OR关键字时: 只要符合这几个查询条件的...

    解决mysql 组合AND和OR带来的问题

    当SQK看到上述WHERE子句时,由于AND在计算次序中优先级更高,操作符被错误的组合了。 此问题的解决方法是使用圆括号明确地分组相应的操作符。 请看下面的SELECT 语句 SELECT prod_name,prod_price FROM pr

    SQL语句中OR和AND的混合使用的小技巧

    这样的话,第一个i.server_org_id = 4这个条件已经不适用了,,,,,,,,从这里可以知道AND 的优先级比OR的优先级高,先执行了前面的AND 语句,然后执行后面的OR语句,所以查出来的数据不是我想要的数据 ...

    SQL 基础--SELECT 查询

    在SQL*Plus中, 你要用一个分号结束每个SQL 语句.(;) 三、SQL*PLUS特征: 字符日期左对齐 数字右对对齐 列名默认大写 SQL PLUS 自己的命令不需以分号“;”结束 四、SQL查询时,数字和日期类型的数据可用...

    SQL语法大全

    sql="select * from 数据表 where 字段名 between 值1 and 值2" (2) 更新数据记录: sql="update 数据表 set 字段名=字段值 where 条件表达式" sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where...

    2009达内SQL学习笔记

    or:条件或 (注: and 的优先级比 or 更高,改变优先级可用括号) 如 SELECT prod_id,prod_price,prod_name FROM Products WHERE prod_price<4 OR vend_id=‘DELL’ not:条件非。否定它之后所跟的任何条件 否定...

    oracle逻辑运算符与其优先级简介

    Oracle的逻辑运算符也是用在SQL语句中必不可少的因素,一共有三个 逻辑运算符 意义 and 双值运算符,如果左右两个条件都为真,则得到的值就为真 or 双值运算符,只要左右两个条件有一个为真,则...

    MYSQL常用命令大全

    mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql 3.导出一个数据库结构 mysqldump ...

    Common Sense Database

    and 的优先级要高于or ::::::::::::新课:::::::::: 模糊查询 类似于ctrl+f会出现一个搜索框 *就是通配符 like与通配符 ‘%’、’_’ %一个或多个 _ 只能是一个… sql语句提供了模糊查询功能,...

    MySQL命令大全

    mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql 3.导出一个数据库结构 ...

    测试培训教材

    In addition, VAPI-XP is fully integrated with Quality Center, enabling you to design your VAPI-XP test script to call any Quality Center test or test set, and execute it as part of your own script....

    Golang中的JSON查询表达式库。-Golang开发

    〜=不包含+-* /%^()以下是运算符到SQL的映射:AND到&& OR到|| RLIKE到〜=非RLIKE到~~ =安装go get -u github.com/elgs/jsonql示例包主导入(“ fmt”“ github.com/elgs/jsonql”)var jsonString =`[{“名称”:...

    【系统】数据库管理系统复习提纲.docx

    数值、货币型 日期、日期时间型:越晚的越大 逻辑型:真大于假 子串包含:$ 字符串比较 大小比较:set collate to "pinyin"(machine、stroke) 相等比较:set exact on(off) 逻辑表达式:not、and、or 运算符优先级:...

    play框架手册

    路由优先级 - 18 - 服务器静态资源 - 18 - staticDir: mapping - 18 - staticFile: mapping - 19 - URL 编码 - 19 - 反转路由:用于生成某些URL - 19 - 设置内容风格(CSS) - 20 - HTTP 内容协商 negotiation - 21 - ...

    play framework 框架手册 word 版

    路由优先级 - 18 - 服务器静态资源 - 18 - staticDir: mapping - 18 - staticFile: mapping - 19 - URL 编码 - 19 - 反转路由:用于生成某些URL - 19 - 设置内容风格(CSS) - 20 - HTTP 内容协商 negotiation - 21 - ...

    整理后java开发全套达内学习笔记(含练习)

    exist 存在, 发生 [ig'zist] '(SQL关键字 exists) extends (关键字) 继承、扩展 [ik'stend] false (关键字) final (关键字) finally (关键字) fragments 段落; 代码块 ['frægmәnt] FrameWork [java] 结构,...

Global site tag (gtag.js) - Google Analytics