我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中 and or 查询的优先级分析

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中 and or 查询的优先级分析

这个可能是容易被忽略的问题,首选我们要清楚:
MySQL中,AND的执行优先级高于OR。也就是说,在没有小括号()的限制下,总是优先执行AND语句,再执行OR语句。
比如:


select * from table where  条件1 AND 条件2 OR 条件3
等价于
select * from table where  ( 条件1 AND 条件2 )  OR 条件3

select * from table where  条件1 AND  条件2 OR 条件3 AND 条件4
等价于
select * from table where (  条件1 AND  条件2  ) OR (  条件3 AND 条件4  )

来点事例深入理解下:

测试表数据:


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
 `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 `name` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
 `author` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
 `price` decimal(10, 2) DEFAULT NULL,
 PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES (1, 'PHP', 'mate', 21.00);
INSERT INTO `book` VALUES (2, 'JAVA', 'kaven', 23.00);
INSERT INTO `book` VALUES (3, 'JAVA高级', 'loose', 45.00);
INSERT INTO `book` VALUES (4, 'GO', 'jim', 46.00);
INSERT INTO `book` VALUES (5, 'GO设计', 'json', 76.00);
INSERT INTO `book` VALUES (6, 'PHP高级编程', 'bate', 67.00);
INSERT INTO `book` VALUES (7, 'Python', 'jim', 66.00);
INSERT INTO `book` VALUES (8, 'Python设计', 'mali', 54.00);
INSERT INTO `book` VALUES (9, 'GO编程', 'kaven', 86.00);
INSERT INTO `book` VALUES (11, 'Python3', 'jim', 55.00);

SET FOREIGN_KEY_CHECKS = 1;

查询方式1:


SELECT * FROM book WHERE author='jim' OR author='json' AND name='PHP';

上面的查询等价于:


SELECT * FROM book WHERE author='jim' OR (author='json' AND name='PHP');

那么上面的查询结果就很好理解了。

查询方式2:


SELECT * FROM book WHERE name='PHP' AND author='jim' OR author='json';

上面的查询等价于:


SELECT * FROM book WHERE (name='PHP' AND author='jim') OR author='json';

查询方式3:


SELECT * FROM book WHERE name='GO' AND (author='jim' OR author='json');

这个就很好理解了。了解and or的优先级。这些查询也就不是呢么"理解混淆"了。

到此这篇关于MySQL中 and or 查询的优先级分析的文章就介绍到这了,更多相关MySQL and or 查询内容请搜索自学编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中 and or 查询的优先级分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中 and or 查询的优先级分析

这个可能是容易被忽略的问题,首选我们要清楚: MySQL中,AND的执行优先级高于OR。也就是说,在没有小括号()的限制下,总是优先执行AND语句,再执行OR语句。 比如:select * from table where 条件1 AND
2022-05-15

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

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

MySQ中and和or查询的优先级是什么

这篇文章给大家分享的是有关MySQ中and和or查询的优先级是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这个可能是容易被忽略的问题,首选我们要清楚:MySQL中,AND的执行优先级高于OR。也就是说,在没
2023-06-14

sql中or和and的优先级

sql 中 or 和 and 的优先级:and 运算符优先级高于 or 运算符,括号可覆盖优先级顺序,示例查询展示了 or 和 and 运算符的优先级顺序和执行顺序。SQL 中 OR 和 AND 的优先级在 SQL 查询中,逻辑运算符 O
sql中or和and的优先级
2024-05-12

sql中的and和or的优先级

在 sql 查询中,and 运算符的优先级高于 or 运算符,这意味着 and 运算符将优先求值,其次才是 or 运算符。SQL 中 AND 和 OR 运算符的优先级SQL 查询中,AND 和 OR 运算符用于组合多个条件,控制结果集的范
sql中的and和or的优先级
2024-05-08

sql中 and和or的优先级关系

sql 中,and 运算符优先级高于 or 运算符。运算符执行顺序为:括号、not、and、or。使用括号可以修改执行顺序,优先执行括号内的表达式。SQL 中 AND 和 OR 的优先级关系在 SQL 中,逻辑运算符 AND 和 OR 用
sql中 and和or的优先级关系
2024-05-10

Javascript中访问器优先级的示例分析

这篇文章主要介绍Javascript中访问器优先级是怎样的,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.正常使用