主页 > 知识库 > 解决mysql 组合AND和OR带来的问题

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

热门标签:南通自动外呼系统软件 信阳稳定外呼系统运营商 湖南人工外呼系统多少钱 石家庄电商外呼系统 芒果电话机器人自动化 日照旅游地图标注 广东人工电话机器人 申请外呼电话线路 百度地图图标标注中心

如下所示:

SELECT prod_name,prod_price FROM products WHERE vend_id = 1002 OR vend_id= 1003 AND prod_price >= 10;

上面这条语句 返回的结果不是我们想要的。

分析:

原因在于计算的次序。SQL 在处理OR操作符前 优先处理AND操作符。当SQK看到上述WHERE子句时,由于AND在计算次序中优先级更高,操作符被错误的组合了。

此问题的解决方法是使用圆括号明确地分组相应的操作符。

请看下面的SELECT 语句

 SELECT prod_name,prod_price
    FROM products

    WHERE( vend_id = 1002 OR vend_id= 1003) AND prod_price >= 10;

补充知识:Mysql| 组合where子句过滤数据(AND,OR,IN,NOT)

mysql 允许使用多个where子句,组合where子句允许使用两种方式使用:AND 和OR子句的方式使用.

数据库中的操作符号:AND , OR , IN , NOT.

AND

SELECT * FROM products WHERE products.vend_id = 1003 AND products.prod_price = 10;

OR

SELECT * FROM products WHERE products.vend_id = 1002 OR products.vend_id = 1003 ;

IN

建议能使用IN的子句中不使用OR,IN行性能好,方便理解.

SELECT * FROM products WHERE products.vend_id IN (1002,1003);

NOT:

Mysql对NOT的支持仅在对IN,BETWEEN,EXISTS子句取反,这与其他多数数据库对各种条件都支持不同.

SELECT * FROM products WHERE products.vend_id NOT IN (1002,1003);

注意:

在同时有AND和OR的子句中,mysql是优先处理AND操作的.一般建议使用()来确定处理顺序和消除歧义.

比如:

SELECT * FROM products WHERE (products.vend_id= 1002 OR products.vend_id=1003) AND prod_price >= 10;

以上这篇解决mysql 组合AND和OR带来的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
  • mysql条件查询and or使用方法及优先级实例分析
  • MySQL中 and or 查询的优先级分析

标签:惠州 公主岭 呼和浩特 阿里 合肥 牡丹江 沈阳 天津

巨人网络通讯声明:本文标题《解决mysql 组合AND和OR带来的问题》,本文关键词  解决,mysql,组合,AND,和,带来,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《解决mysql 组合AND和OR带来的问题》相关的同类信息!
  • 本页收集关于解决mysql 组合AND和OR带来的问题的相关信息资讯供网民参考!
  • 推荐文章