如何使用where条件筛选数据_mysql条件查询方法

5次阅读

WHERE是mysql中用于筛选数据的核心条件子句,必须配合select、UPDATE或delete使用;支持单条件、字符串匹配(=、LIKE)、空值判断(IS NULL)、多条件组合(AND/OR/NOT)及优先级控制。

如何使用where条件筛选数据_mysql条件查询方法

在 MySQL 中,WHERE 是用于筛选数据的核心条件子句,必须配合 SELECTUPDATEDELETE 使用,才能按指定规则过滤出符合条件的记录。

WHERE 基本语法与常见写法

最基础的用法是:在 SELECT 语句后加上 WHERE,后面跟一个或多个布尔表达式。MySQL 会逐行判断每条记录是否满足条件,只返回结果为 TRUE 的行。

  • 单条件查询: SELECT * FROM users WHERE age > 18;
  • 字符串匹配(注意大小写敏感性): SELECT name FROM users WHERE city = '北京';
  • 使用 LIKE 模糊查找: SELECT * FROM products WHERE name LIKE '%手机%';(% 表示任意字符,_ 表示单个字符)
  • 空值判断不能用 = NULL,必须用 IS NULL: SELECT * FROM orders WHERE shipped_date IS NULL;

组合多个条件:AND、OR、NOT

实际查询中往往需要同时满足多个条件,或满足其一即可,这时要用逻辑运算符连接。

  • AND 表示“且”: SELECT * FROM students WHERE grade >= 85 AND gender = '女';
  • OR 表示“或”: SELECT * FROM employees WHERE dept = '技术部' OR dept = '产品部';
  • NOT 表示“非”: SELECT * FROM users WHERE NOT status = '禁用';
  • 优先级注意:NOT > AND > OR;建议用括号明确逻辑顺序: WHERE (age > 25 OR age

范围与集合类条件:IN、BETWEEN、IS NULL

这些写法让 WHERE 更简洁高效,避免重复写多个 OR。

  • BETWEEN 包含边界值,适合连续区间: SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';
  • IN 用于匹配多个离散值: SELECT * FROM products WHERE category_id IN (1, 3, 5);
  • NOT IN 要小心 NULL:若列表含 NULL,整条表达式可能返回空结果,建议先排除 NULL 或改用 EXISTS。

注意事项与性能提示

WHERE 看似简单,但写错或不注意细节容易查不到数据、结果异常,甚至拖慢查询速度。

  • 字符串值必须加单引号,数字不用;日期推荐用 ‘yyYY-MM-DD’ 格式。
  • 区分大小写取决于字段的 collation,如 utf8mb4_0900_as_cs 是大小写敏感,_ai_ci 则不敏感。
  • WHERE 中对字段做函数操作(如 WHERE YEAR(create_time) = 2024)会导致索引失效,应尽量改写为范围查询。
  • LIKE 开头用 %(如 ‘%abc’)无法走索引,结尾带 %(如 ‘abc%’)可利用索引加速。
text=ZqhQzanResources