`

sql and or 优先级问题

    博客分类:
  • SQL
sql 
阅读更多
刚刚在项目中遇到这样一个问题,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(性别)。...

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

    在SQL中,AND的优先级高于OR,这意味着当一个查询包含AND和OR时,AND连接的条件会先被评估。例如,在以下语句中: ```sql WHERE condition1 AND condition2 OR condition3 ``` 系统会首先检查`condition1`和`...

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

    了解并熟练掌握`AND`和`OR`的使用以及它们的优先级,对于编写高效的SQL查询至关重要。在处理复杂的数据过滤和检索时,这将帮助你精确地获取所需的信息。 在实际应用中,你可以结合使用`DISTINCT`来去除重复行,`...

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

    这个查询的问题在于,由于AND操作符具有比OR更高的优先级,MySQL会先执行`vend_id = 1003 AND prod_price >= 10`这部分。因此,结果可能不符合预期,因为它将返回所有`vend_id`为1002的记录,以及`vend_id`为1003且...

    ORACEL逻辑比较和优先级规则

    Oracle SQL中的逻辑运算符优先级为:`NOT` > `AND` > `OR`。这意味着`NOT`运算符优先级最高,其次是`AND`,最后是`OR`。 - **示例**: 考虑以下查询: ```sql SELECT last_name || '' || salary * 1.05 AS ...

    【SQL基础(二)】【SQL WHERE 子句+引号的使用+SQL AND & OR 运算符+SQL ORDER BY 子句】

    在处理复杂查询时,可以通过使用圆括号来组织AND和OR运算符的优先级。 ORDER BY子句是用于对查询结果进行排序的。我们可以按照一个或多个列对结果集进行升序或降序排列。例如,如果我们有一个包含公司名称和订单号...

    asp的SQL语句中and和or同时使用的注意事项

    本文将详细讲解在ASP的SQL语句中如何正确、有效地使用`AND`和`OR`。 首先,`AND`和`OR`是SQL中的逻辑运算符,它们用于组合多个条件。`AND`操作符用于连接两个或多个条件,只有当所有条件都为真时,整个表达式才为真...

    SQL、pl/sql基础语句大全

    它们的优先级是`NOT > AND > OR`。例如,`WHERE A AND B OR C`会被解析为`(A AND B) OR C`。 4. **运算符优先规则**:算术运算符(如加减乘除)优先于连接符(如`+`用于字符串连接),连接符又优于比较运算符,比较...

    SQL语句实例学习(个人整理)

    AND和OR运算符用于组合多个条件,从而构建更复杂的查询。它们允许你根据多个标准进行过滤。AND表示“并且”,OR表示“或者”。其语法为: ```sql SELECT column1, column2, ... FROM table_name WHERE condition1 ...

    SQL注入之万能密码.docx

    这是因为 'or' 运算符在SQL中具有较低的优先级,而 'and' 运算符的优先级更高。因此,即使原始条件(username='')不满足,'a'='a' 的部分也会使整个表达式变为真。 此外,万能密码还有其他变体,例如: 1. "')or...

    mysql代码-where/and/or

    在使用`AND`和`OR`时,需要注意逻辑优先级问题。通常,`AND`的优先级高于`OR`,这意味着如果`AND`和`OR`在一个条件组内混合使用,需要使用括号来明确指定优先级,避免歧义。比如: ```sql -- 错误示例,可能会产生...

    SQL语句初学者速成

    在更复杂的查询中,你可以结合使用AND和OR操作符来构造更精细的条件。比如,选取销售额超过1000或者在500到2750之间的店铺记录: ```sql SELECT store_name FROM Store_Information WHERE Sales > 1000 OR (Sales...

    niit sql考试题目

    4. 逻辑运算符的优先级:在SQL中,逻辑运算符的优先级通常是`NOT > AND > OR`,因此正确答案是第1个选项。 5. 流程图的定义:流程图是程序设计中的图形表示,它以图形形式描绘出程序的执行步骤。 6. `...

    SQL基本语句

    在本文中,我们将深入探讨SQL的基本语句,包括SELECT、SELECT DISTINCT、WHERE子句以及AND和OR运算符。 一、SQL SELECT 语句 SELECT语句是SQL中最基础也是最重要的部分,它用于从数据库表中提取数据。基本语法是`...

    WEB界面编辑任意SQL条件组合

    在描述中提到的“WEB界面编辑任意SQL条件组合”,暗示了用户可以自由选择和组合多个SQL条件,如WHERE子句中的AND、OR操作符,可能还包括括号来控制优先级,甚至可以设置比较运算符(如=、<、>)以及值,以实现复杂的...

    SQL技术 范围运算符例

    优先级顺序是:`NOT` > `AND` > `OR`,这意味着在没有括号的情况下,`NOT`先于`AND`,`AND`先于`OR`执行。 综合运用这些运算符,可以构造出复杂的SQL查询语句,实现灵活的数据筛选和分析。例如,要找出年龄在10到30...

    SQL语句教程 精编

    本教程将介绍SQL语句的基础知识,包括SELECT、DISTINCT、WHERE、AND和OR等关键概念。 首先,SELECT语句是SQL中最核心的命令,用于从数据库的表格中提取数据。基本的SELECT语句结构是: ```sql SELECT "栏位名" ...

Global site tag (gtag.js) - Google Analytics