第7章 数据高级过滤
组合WHERE子句
AND操作符
OR操作符
计算次序
IN操作符
NOT操作符
一、组合WHERE子句
为了进行更强的过滤控制,MySQL允许给出多个where
子句。这些子句可以两种方式使用:以and
子句的方式或or
子句的方式使用。
1、AND操作符
为了通过不止一个列进行过滤,可使用and
操作符给where
子句附加条件。
select prod_id, prod_price, prod_name
from products
where vend_id = 1003 and prod_price <= 10;
and
用在where
子句中的关键字,用来指示检索满足所有给定条件的行。还可以添加多个过滤条件,每添加一条就要使用一个and
。
2、OR操作符
or
操作符与and
操作符不同,它指示MySQL检索匹配任一条件的行。
select prod_name, prod_price
from products
where vend_id = 1002 or vend_id = 1003;
用来检索匹配任一给定条件的行。
3、计算次序
where
可包含任意数据的and
和or
操作符。允许两者结合以进行复杂和高级过滤。
例如,要列出价格为10美元(含)以上且由1002或1003制造的所有产品。
select prod_name, prod_price
from products
where (vend_id = 1002 or vend_id = 1003) and prod_price >= 10;
注意:and
操作符的优先级要高于or
,所有这里需要使用小括号。
4、IN操作符
圆括号在where
子句中还有另外一种用法。in
操作符用来指定条件范围,范围中的每个条件都可以进行匹配。in
取合法值由逗号分隔的清单,全都括在圆括号中。
select prod_name, prod_price
from products
where vend_id in (1002, 1003)
order by prod_name;
in
操作符完成与or
相同的功能。
in操作符优点:
更清楚直观
计算的次序更容易管理
比or执行更快
可以包含其它select语句
5、NOT操作符
where子句中的not操作符有且只有一个功能,那就是否定之后所跟的任何条件。
例如,列出除了1002和1003之外的所有供应商制造的产品。
select prod_name, prod_price
from products
where vend_id not in (1002, 1003)
order by prod_name;
?