Mysql数据库实现多字段过滤的方法
作者:码农视界 发布时间:2024-01-16 11:35:48
我国移动互联网进入了飞速发展阶段,互联网人才日益受到企业的重视,其中PHP开发人才便是其中之一,在互联网旅游、金融、餐饮、娱乐、社交等一些新兴企业与软件开发企业中,PHP开发岗位相对占有核心地位,今天给大家分享的技术知识是—— mysql数据库如何实现多字段过滤。
1.多字段过滤查询
类比现实:查询公司中户籍是北京的、年龄超过30岁、性别是男的同事信息;
查询场景:查询商品名称是'King doll'、商品价格是9.49的商品。
查询SQL:
SELECT prod_id, prod_name, prod_price F ROM Products W HERE prod_name = 'King doll' AND prod_price = 9.49;
查询结果:
2.多字段过滤连接
WHERE字句中有多个字段进行查询过滤,过滤条件如何连接的呢?MySql允许给出多个WHERE字句进行过滤,它们可以使用AND或者OR进行连接!
AND连接类比现实:飞鹰小学5年2班身高超过1米3、不戴眼镜的男同学去操场上跑步。根据上述描述可以得出结论必须同时满足身高超过1米3、不戴眼镜、男生这三个条件的同学才需要去操场跑步,任何一个条件不满足都不用去操场跑步。
OR连接类比现实:飞鹰小学5年2班身高超过1米3或不戴眼镜的同学去操场上跑步,根据上述描述可以得出结论只要满足身高超过1米3,或不戴眼镜这两个条件中任意一个条件的学生就要去操场跑步,即身高超过1米3的同学要去跑步,不戴眼镜的同学要去跑步。只要满足任意一个条件就需要去操场可以!
2.1AND操作符
AND运算符作用?用来指示检索满足所有给定条件的行。如果需要同时满足多个过滤条件,只需要在过滤条件之间添加AND即可。
测试案例:查询商品单价在2-5之间,商品数量大于等于10的订单数据。
测试SQL:
SELECT * FROM OrderItems W HERE item_price B ETWEEN 2 AND 5 AND quantity >= 10 ORDER BY order_num DESC;
测试结果:
结果说明:如果有多个过滤条件需要同时满足,那么只需要在哪些过滤条件之间加上AND关键字即可,查询条件理论上个数不限!
2.2OR操作符
OR操作符作用?用来指示检索满足任一给定条件的行。如果有多个过滤条件,那么需要过滤条件之间添加OR即可。
测试案例:查询商品单价在3-5之间,或商品数量大于等于200的订单数据。
测试SQL:
SELECT * F ROM OrderItems W HERE item_price B ETWEEN 3 AND 5 OR quantity >= 200 ORDER BY order_num DESC;
测试结果:
结果说明:只要满足商品单价在[3,5]之间,或者商品数量大于等于200的订单都满足条件。
2.3AND和OR进行对比
AND必须满足全部条件,OR只需要满足任一条件。
类比理解:现在有一群黑色和白色的公企鹅,如果取走黑色母企鹅,即SELECT * FROM 企鹅 WHERE 颜色=黑色 AND 性别=母是查询不到企鹅的,因为两个条件必须同时满足,性别=母是没有;如果要取走颜色是白色或性别是母的企鹅,即SELECT * FROM
企鹅 WHERE 颜色=白色 OR 性别=母,那么就可以将白色公企鹅查询出来。
2.4执行次序
将AND和OR结合使用进行复杂的数据过滤,那么就会出现执行次序的问题。
类比现实:比如小学中学习有括号四则混合运算,那么运算就要满足一定顺序;比如公司中查询月薪超过10w,并且职位是管理层或开发者的员工。
测试情景:查询商品单价是3.49,商品编号是BNBG01或BNBG03的订单。
分析思考:查询商品单价必须满足3.49,而商品编号只需要满足BNBG01或BNBG03任一个即可。
测试SQL:
SELECT * F ROM OrderItems W HERE item_price B ETWEEN 3 AND 5 OR quantity >= 200 ORDER BY order_num DESC;
测试结果:
结果分析:
数据没有满足我们的预期,为什么呢?单价必须等于3.49。
在SQL的世界中AND运算符优先于OR运算符,好比乘法运算优先于加减法运算先执行。
SELECT * F ROM OrderItems W HERE item_price=3.49 AND prod_id='BNBG01' OR prod_id='BNBG03';
实际查询的结果是单价等于3.49并且商品编号是'BNBG01'的订单,或者商品编号是'BNBG03'的订单,所以和我们预期是不一样的!
如何解决AND和OR的顺序问题呢?使用圆括号明确地分组进行相应的操作。
测试SQL:
SELECT * F ROM OrderItems W HERE item_price= 3.49 AND (prod_id = 'BNBG01' OR prod_id= 'BNBG03') ;
测试结果:
结果分析:
从查询结果中可以看到,(prod_id='BNBG01' OR prod_id='BNBG03')
作为1个整体变成1个执行单元;
圆括号的优先级高于AND,AND优先级高于OR;
如果查询过滤条件过多,使用AND或者OR,那么就应该使用圆括号明确地分组操作,不要以来默认地计算次序!使用圆括号的好处在于可消除歧义,增强可读性。
总结
以上所述是小编给大家介绍的Mysql数据库实现多字段过滤的方法网站的支持!
来源:http://database.51cto.com/art/201807/579724.htm


猜你喜欢
- 目前是把图片存在mongodb数据库,实现一个方法,比如 访问 /get_pic/ID 能实现图片在浏览器打开,添加了一个状态,比如?fil
- 在 Python 2.5 中, with 关键字被加入。它将常用的 try ... except ... finally ... 模式很方便
- ps:大多与c等编程语言极为相似一、if分支if:给定一个条件,同时为该条件设置多种(一般两种)情况,然后通过条件判断来实现具体的执行段复合
- 本文实例讲述了Python实现的大数据分析操作系统日志功能。分享给大家供大家参考,具体如下:一 代码1、大文件切分import osimpo
- 概述一个状态管理工具Store:保存数据的地方,你可以把它看成一个容器,整个应用只能有一个 Store。State:包含所有数据,如果想得到
- 本文实例讲述了Flask框架学习笔记之模板操作。分享给大家供大家参考,具体如下:flask的模板引擎是Jinja2。引入模板的好处是增加程序
- 本文实例讲述了Python3运算符常见用法。分享给大家供大家参考,具体如下:4.1算数运算符(以下假设变量a为10,变量b为21)实例操作:
- 背景DMicro 诞生的背景,是因为我写了 10 来年的 PHP,想在公司内部推广 Go, 公司内部的组件及 rpc 协
- 一、使用copula生成合成数据集(synthetic dataset)1. 三维数据描述建立一个三维数据表,查看三维数据的散点
- 一、简单配置,获取单个网页上的内容。(1)创建scrapy项目scrapy startproject getblog(2)编辑
- 读文件:要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:>>> f = op
- 本文实例讲述了Python基础之条件控制操作。分享给大家供大家参考,具体如下:if 语句Python中if语句的一般形式如下所示:if co
- 安装方法: regsvr32 parmf.dll附 如果想取消注册可以:regsvr32 /u&nb
- 前一段时间有发过一个简单的JMAIL邮件发邮件的代码,今天就把这个代码做一个具体的注解,并增加了另外两个格式的代码,并举几个简单
- 前言go.Panel面板是gojs重要的绘图模板,上文中我们提到的是可视化图形中的节点分组.而go.Panel可以把节点内部分成很多的模块,
- 对于Vue.js来说,如果你想要快速开始,那么只需要在你的html中引入一个<script>标签,加上CDN的地址即可。但是,这
- 一个简单的例子:将如下代码另存为.wsc文件,并右键“注册”(卸载时右键“不注册”)。<Component> <regis
- matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也
- JavaScript闭包,是JS开发工程师必须深入了解的知识。3月份自己曾撰写博客《JavaScript闭包》,博客中只是简单阐述了闭包的工
- (可能只有最后一句命令有用,可能全篇都没用)(小白方法,可能只适用于本人情况)安装matplotlib时,出现的三种失败情况1、read t