MySQL - 条件查询中 AND 与 OR 联合使用
发布日期:2021-06-30 23:26:09
浏览次数:3
分类:技术文章
本文共 1214 字,大约阅读时间需要 4 分钟。
MySql查询中经常会用到AND与OR一起使用的情况,可如果写法不对,往往会起到相反的效果,这不,前几天就碰到了,最后测试果然提了一堆bug~
1、当mysql的WHERE语句中出现AND、OR时,AND 要么全部放在 OR 的前面,放在OR之后的AND条件将不会起作用,参考sql
SELECT e.total_amountFROM cmo_expense_account eWHERE e.project_id='236aec01d88e48cdaaee357a870d18b5' AND e.ea_type =1 OR (e.project_id in (select t1.id from pm_project t1 where t1.parent_id='236aec01d88e48cdaaee357a870d18b5')) and e.total_amount>300
- 当然,结果肯定是200的也会出现,如果你把 AND e.ea_type =1再放到后面,naer_type=2的也就出现了
2、如果你怕出错,可以使用union all写法。将and与or分开,这样就不会存在问题了,就是比较麻烦
select sum(t3.total_amount) from ( SELECT e.total_amount FROM cmo_expense_account e WHERE e.project_id='236aec01d88e48cdaaee357a870d18b5' AND e.ea_type =1 union ALL SELECT e.total_amount FROM cmo_expense_account e WHERE e.project_id in (select t1.id from pm_project t1 where t1.parent_id='236aec01d88e48cdaaee357a870d18b5') AND e.ea_type =1) t3
3、如果你坚持需要将AND放在OR之后,那么,OR的两边应该用()括起来和AND并列。比如下面这个:
SELECT * from student WHERE id = 1 or id = 2 AND age = 20;
查询出 id 是 1 或者 2 并且年龄是 20 的,那么很明显结果:
上面查询出来的是id=1的或者id为2并且年龄20的,如果想取唯一的并集,那么就需要这么写
SELECT * from student WHERE (id = 1 or id = 2 ) AND age = 20;
这样查出来的才是id为1或者2的并且年龄一定是20的!
转载地址:https://lux-sun.blog.csdn.net/article/details/106134118 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月09日 20时08分52秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
月薪15~20k的前端面试问什么?
2019-04-30
在 Vue 中用 Axios 异步请求API
2019-04-30
MySQL进阶查询(SELECT 语句高级用法)
2019-04-30
Mysql 之主从复制
2019-04-30
【工具使用】新版CSDN-markdown编辑器使用指南
2019-04-30
【NLP学习笔记】中文分词(Word Segmentation,WS)
2019-04-30
【超越白皮书7】你需要知道关于ETH2.0的几个事实
2019-04-30
对于时间复杂度的通俗理解
2019-04-30
如何输入多组数据并输出每组数据的和?
2019-04-30
行阶梯型矩阵
2019-04-30
图像处理学习笔记
2019-04-30
用MATLAB实现m序列的生成(MATLAB 2021a适用)
2019-04-30
MATLAB函数备忘(定期更新)
2019-04-30
13行MATLAB代码实现网络爬虫 爬取NASA画廊星图
2019-04-30
MATLAB指定路径保存图片方法
2019-04-30
Python一键获取微信推送封面图
2019-04-30
油猴脚本:微信推送浏览功能拓展
2019-04-30
JavaScript 表单操作与MD5加密
2019-04-30
JAVA学习笔记4 - 循环与分支结构
2019-04-30