《MySQL必知必会》-第7章 数据过滤

组合使用where子句建立功能更强的高级搜索条件。同时学习使用not和in操作符

  • and操作符
select prod_id,prod_price,prod_name
from products
where vend_id = 1003 and prod_price <= 10;
#同时匹配
  • or操作符
select prod_name,prod_price
from products
where vend_id = 1002 or vend_id = 1003;
#匹配任一条件即可
  • 计算次序
# 检索价格大于等于10美元,且由1002或1003制造的商品
# 有歧义的组合示范
select prod_name,prod_price
from products
where vend_id = 1002 or vend_id = 1003 and prod_price >= 10;
//and比or有更高的优先级,所以DBMS理解为:1003制造的价格大于等于10美元的商品或者1002制造的任意价格的商品
# 正确写法,使用圆括号进行明确的分组
select prod_name,prod_price
from products
where (vend_id = 1002 or vend_id = 1003) and prod_price >= 10;
# 当and和or组合使用时,都应该使用圆括号进行分组来消除歧义
  • in操作符
select prod_name,prod_price
from products
where vend_id in (1002,1003)
order by prod_name;
#功能与or相同,更加推荐用in
  • not操作符

有且只有一个功能,否定后面所跟的任何条件

select prod_name,prod_price
from products
where vend_id not in (1002,1003)
order by prod_name;
#匹配1002和1003之外的供应商的vend_id
posted @ 2022-03-09 09:11  Mer_curiail  阅读(22)  评论(0)    收藏  举报  来源