Mysql数据库实现多字段过滤的方法

 更新时间:2018年07月26日 09:22:44   作者:码农视界  
这篇文章主要介绍了Mysql数据库实现多字段过滤的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

我国移动互联网进入了飞速发展阶段,互联网人才日益受到企业的重视,其中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数据库实现多字段过滤的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • MYSQL8如何快速修改root密码

    MYSQL8如何快速修改root密码

    MySQL8的改密码跟MySQL5不同,很多朋友都遇到过这个问题,今天小编给大家讲解下MYSQL8如何快速修改root密码,需要的朋友可以参考下
    2023-05-05
  • MySQL多表查询机制

    MySQL多表查询机制

    这篇文章主要介绍了MySQL多表查询机制,多表查询首先离不开等值连接,下文我们从等值连接展开详细内容,具有一定的参考价值需要的小伙伴可以参考一下
    2022-03-03
  • MySQL如何快速批量插入1000w条数据

    MySQL如何快速批量插入1000w条数据

    这篇文章主要给大家介绍了关于MySQL如何快速批量插入1000w条数据的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • MySQL延迟关联性能优化方法

    MySQL延迟关联性能优化方法

    这篇文章主要介绍了MySQL延迟关联性能优化方法,本文讲解了延迟关联的背景、延迟关联的分析、延迟关联的解决等内容,需要的朋友可以参考下
    2015-05-05
  • Mysql的水平分表与垂直分表的讲解

    Mysql的水平分表与垂直分表的讲解

    今天小编就为大家分享一篇关于Mysql的水平分表与垂直分表的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Mysql 5.7.17忘记密码怎么办

    Mysql 5.7.17忘记密码怎么办

    这篇文章主要介绍了Mysql 5.7.17忘记密码的解决方法,需要的朋友可以参考下
    2017-03-03
  • 详解让MySQL和Redis数据保持一致的四种策略

    详解让MySQL和Redis数据保持一致的四种策略

    在分布式系统中,保证Redis和MySQL之间的数据一致性是一个复杂且重要的问题,下面这篇文章主要给大家介绍了关于让MySQL和Redis数据保持一致的四种策略,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • mysql实现定时备份的详细图文教程

    mysql实现定时备份的详细图文教程

    这篇文章主要给大家介绍了关于mysql实现定时备份的详细图文教程,我们都知道数据是无价,如果不对数据进行备份,相当是让数据在裸跑,一旦服务器出问题,只有哭的份了,需要的朋友可以参考下
    2023-07-07
  • mysql与mysqli的区别与用法说明

    mysql与mysqli的区别与用法说明

    mysql是非持继连接函数而mysqli是永远连接函数。
    2010-07-07
  • 快速增加MYSQL数据库连接数负载能力的方法分享

    快速增加MYSQL数据库连接数负载能力的方法分享

    mysql数据库的负载能力除了和你机器硬件有关,还有一个重要参数就是你系统的配置有关,下面我来给大家介绍几种提高MYSQL数据库连接数负载能力方法总结,有需要的朋友可以参考一下
    2013-08-08

最新评论