购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

6.4 逻辑运算符的优先级

在查询中可以将AND运算符、OR运算符和NOT运算符综合起来使用,但这3个运算符拥有不同的优先级,它们的优先级顺序(由高到低)如图6.6所示。

图6.6 逻辑运算符的优先级别

了解运算符的优先级,在使用时非常重要。如果不掌握运算符的优先级,在使用时就可能达不到预期的效果。下面是一个说明AND运算符和OR运算符优先级的例子。

示例06 在goods商品信息表中,应用OR运算符和AND运算符组合查询商品信息,查询出商品分类id(cat_id)为191或123,并且商品的本店价格(shop_price)大于2000元的所有商品。

输入:

输出(如图6 . 7所示):

图6.7 使用OR、AND运算符组合查询

由图6.7中的运行结果可以看出,商品分类id为191并且商品本店价格小于2000元的商品也被查询出来,显然没有达到预期的效果。出现该问题的原因在于求值的顺序,SQL在处理OR运算之前,会优先处理AND运算,所以在结果中查询出商品分类id为123且商品本店价格大于2000元的商品,以及商品分类id为191的所有商品。要解决这个问题,可以使用小括号对运算符和查询条件进行分组。

输入:

输出(如图6 . 8所示):

图6.8 使用OR、AND运算符组合查询

说明

因为小括号具有比AND、OR或NOT运算符更高的优先级,所以在WHERE子句中使用不同的逻辑运算符时,都应该使用小括号对运算符和查询条件进行明确分组。

示例07 在bookinfo图书信息表中,使用OR、AND和NOT运算符组合查询图书信息,查询出图书名称(BookName)包含“PHP”或“JSP”,并且不是机械工业出版社出版的所有图书名称、出版社(publisher)和图书作者(Writer)。

输入:

输出(如图6 . 9所示):

图6.9 使用逻辑运算符组合查询

示例08 在goods商品信息表中,使用NOT运算符和AND运算符查询商品信息,查询出商品分类id(cat_id)不是191和123的所有商品分类id、商品名称(goods_name)和商品本店价格(shop_price)。

输入:

输出(如图6 . 10所示):

图6.10 使用逻辑运算符组合查询 8xBE7w00WEskTPNwAmk0FvZWfhGqyCOaMVeZNAkwBN0WpXkIst8EGEf4zwm8bX1s

点击中间区域
呼出菜单
上一章
目录
下一章
×