MySQL中|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 条件3select * 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');
【MySQL中|MySQL中 and or 查询的优先级分析】那么上面的查询结果就很好理解了。
查询方式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 查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- Ant|Ant design vue中的联动选择取消操作
- mysql|mysql where中如何判断不为空的实现
- 关于MySQL|关于MySQL B+树索引与哈希索引详解
- 【北亚数据库数据恢复】使用delete命令未添加where子句删除全表数据的Mysql数据库数据恢复
- 2022-2027年中国北斗卫星导航系统行业市场调研及未来发展趋势预测报告
- 行业报告|2022-2027年中国电话综合信息服务未来发展预测及投资方向研究报告
- big|中国电动汽车换电行业需求现状及未来发展规划报告2022-2028年版
- 2021年全球及中国独角兽企业发展分析(中国有3家企业进入全球前十[图])
- 中国废塑料回收业前景方向预测与投资战略规划分析报告2022-2028年版
- 2022-2028中国隐私管理软件市场现状研究分析与发展前景预测报告