组合WHERE子句

Mysql-数据过滤

本章说如何组合 WHERE 子句以建立更高级的搜索条件.我们还将学习如何使用 NOT 和 IN 操作

组合 WHERE 子句

  • 操作符用来连结或者改变 WHERE 子句中的子句的关键字

AND 操作符

为了通过不止一个列进行过滤,可使用 AND 操作符给 WHERE 子句附加条件

  • AND 表示 两个条件必须同时满足

SELECT id,price,name from user WHERE id='003' AND price=300;

WHERE 子句链接 通过 and 表示两个条件 必须同时满足

OR 操作符

OR 表示只要满足一个就行


SELECT name,id,price FROM user WHERE id='003' OR price=500;

AND 和 OR 的次序

WHERE 可包含任意数目的 AND 和 OR 操作符,允许两者结合进行复杂和高级的过滤

  • 特别注意的就是 AND 操作符级别最高

SELECT name,price FROM user WHERE id='1002' OR id='1003' AND price>=300

这样他会优先使用 AND

  • 最后的效果实际等于

SELECT name,price FROM user WHERE (id='1002' OR id='1003') AND price>=300

IN 操作符 等价于 OR

圆括号在 WHERE 子句中还有另外一种用法,IN 操作符用来指定条件范围,范围中每个条件都可以进行匹配,IN 取合法值的由逗号分隔的清单,全都在圆括号中

  • 特别注意的就是 IN 不表示范围,它只表示几个数中的取值

SELECT * FROM user WHERE id IN (1000,1100) ORDER BY name;
  • 上面等价于

SELECT * FROM user WHERE id='1000' OR id='1100' ORDER BY name;

IN 的特点

  • 1.在使用长的合法选项清单时候,IN 操作符的语法更清楚更直观
    1. 在使用 IN 时 计算的次序更容易管理
    1. IN 的操作符一般比 OR 操作符执行更快
    1. IN 的最大的优点时可以包含其他 SELECT 语句,使得能更加动态建立 WHERE 子句

NOT 操作符

WHERE 子句中的 NOT 操作符有且只有一个功能,那就是否定它之后所有的任何条件

NOT WHERE 子句 用来否定后跟的条件的关键字


SELECT name,price FROM user WHERE id NOT IN (1002,1003) ORDER BY name;

它表示 不匹配 1002 和 1003 的 ID 而是匹配 I002 和 I003 以外的 ID


文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录