MySQL数据库如何实现多字段过滤?在新兴公司和软件开发公司中,PHP开发岗位占据着比较核心的位置。今天给大家分享的技术知识是如何在mysql数据库中实现多字段过滤。1、多字段过滤查询类比现实:查询公司内户籍在北京,30岁以上,性别为男性的同事信息;查询场景:查询商品名称为'Kingdoll',价格为9.49的商品。查询SQL:SELECTprod_id,prod_name,prod_priceFROMProductsWHEREprod_name='Kingdoll'ANDprod_price=9.49;查询结果:2.多字段过滤连接WHERE子句中有多个字段用于查询过滤。如何连接过滤条件?MySql允许过滤多个WHERE词,它们可以用AND或OR连接起来!AND连接类比现实:飞英小学五年级二班一名身高超过1.3米、不戴眼镜的男学生在操场上奔跑。根据以上描述可以得出结论,只有满足身高1.3米以上、不戴眼镜、男生三个条件的同学才需要去操场跑步。如果不满足任何一个条件,他们就不需要去操场跑步。OR类比现实:飞英小学五年级二班身高超过1.3米或不戴眼镜的学生在操场上跑步。根据上面的描述,可以得出结论,只要满足这两个要求,满足其中任何一个条件的同学,一定要去操场跑步,也就是身高超过1.3米的同学,一定要去操场跑步,不戴眼镜的同学必须去跑步。只要满足任何一个条件,就需要去游乐场!2.1AND运算符AND运算符的作用是什么?用于指示检索满足所有给定条件的行。如果需要同时满足多个过滤条件,只需要在过滤条件之间加上AND即可。测试用例:查询商品单价在2-5之间,商品数量大于等于10的订单数据。测试SQL:SELECT*FROMOrderItemsWHEREitem_priceBETWEEN2AND5ANDquantity>=10ORDERBYorder_numDESC;测试结果:结果说明:如果有多个过滤条件需要同时满足,只需要在过滤条件之间加上AND关键字即可,查询条件个数理论上没有限制!2.2OR运??算符OR运算符的作用是什么?用于指示检索满足任何给定条件的行。如果有多个过滤条件,需要在过滤条件之间加上OR。测试用例:查询商品单价在3-5之间,或者商品数量大于等于200的订单数据。测试SQL:SELECT*FROMOrderItemsWHEREitem_priceBETWEEN3AND5ORquantity>=200ORDERBYorder_numDESC;测试结果:结果说明:只要商品单价在[3,5]之间,或者商品数量大于等于200,就满足条件。2.3AND与OR比较AND必须满足所有条件,OR只需要满足任意一个条件。类比理解:现在有一群黑白雄企鹅,如果拿黑色雌企鹅,也就是SELECT*FROMpenguinWHEREcolor=blackANDgender=female,查询不到企鹅,因为这两个条件必须同时遇到,gender=没有女;如果要取出颜色为白色或性别为雌性的企鹅,即SELECT*FROMpenguinsWHEREcolor=whiteORgender=female,则可以查询白色雄性企鹅。2.4执行顺序如果AND和OR一起使用进行复杂的数据过滤,那么就会出现执行顺序的问题。与现实打个比方:比如你在小学学习了四个括号内的混合运算,那么这个运算一定要满足一定的顺序;比如某公司,可以查询月薪超过10w的员工,职位是管理还是开发。测试场景:查询单价为3.49,商品编号为BNBG01或BNBG03的订单。分析思路:查询商品的单价必须满足3.49,而商品编号只需要满足BNBG01或BNBG03其中之一即可。测试SQL:SELECT*FROMOrderItemsWHEREitem_priceBETWEEN3AND5ORquantity>=200ORDERBYorder_numDESC;测试结果:结果分析:数据没有达到我们的预期,为什么?单价必须等于3.49。在SQL世界中,AND运算符优先于OR运算符,就像乘法优先于加法和减法一样。SELECT*FROMOrderItemsWHEREitem_price=3.49ANDprod_id='BNBG01'ORprod_id='BNBG03';实际查询结果是单价等于3.49,货品编号为'BNBG01'的订单,或者货品编号为'BNBG03'的订单,与我们预期的不一样!如何解决AND和OR的顺序问题?使用括号显式分组并执行相应的操作。测试SQL:SELECT*FROMOrderItemsWHEREitem_price=3.49AND(prod_id='BNBG01'ORprod_id='BNBG03');测试结果:结果分析:从查询结果可以看出,(prod_id='BNBG01'ORprod_id='BNBG03')1个整体变成1个执行单元;括号优先级高于AND,AND优先级高于OR;如果查询过滤条件太多,用AND或者OR,那么应该用括号明确分组操作,不要因为默认是按顺序计算的!使用括号的好处是可以消除歧义,增强可读性。
