上一篇                     
               
			  数据库 where 多条件查询语句怎么写
- 数据库
- 2025-07-14
- 3330
 数据库中进行多条件查询时,可以使用 
 
 
WHERE 子句结合多个条件。,“
 sql,SELECT FROM table_name,WHERE condition1 AND condition2 OR condition3;,“,确保使用逻辑运算符(如 AND、OR)正确组合条件,以实现所需的查询结果
数据库查询中,WHERE子句用于筛选满足特定条件的数据,当需要同时应用多个条件时,可以通过逻辑运算符(如 AND、OR)或括号来组合这些条件,以下是详细的多条件查询语句的写法及示例:
使用 AND 运算符
AND 运算符要求所有条件同时满足,查询年龄大于 25 岁且城市为 “北京” 的用户:
SELECT FROM users WHERE age > 25 AND city = '北京';
| 条件1 | 条件2 | 结果 | 
|---|---|---|
| age > 25 | city = '北京' | 返回同时满足两个条件的记录 | 
使用 OR 运算符
OR 运算符只需满足任意一个条件即可,查询年龄小于 20 岁或城市为 “上海” 的用户:

SELECT FROM users WHERE age < 20 OR city = '上海';
| 条件1 | 条件2 | 结果 | 
|---|---|---|
| age < 20 | city = '上海' | 返回满足任一条件的记录 | 
混合使用 AND 和 OR
当需要同时包含多种逻辑时,可以通过括号明确优先级,查询年龄在 20 到 30 岁之间且城市为 “广州” 或 “深圳” 的用户:
SELECT FROM users WHERE (age >= 20 AND age <= 30) AND (city = '广州' OR city = '深圳');
| 条件组1 | 条件组2 | 结果 | 
|---|---|---|
| age >= 20 | city = '广州' | 返回满足所有条件的记录 | 
| age <= 30 | city = '深圳' | 
使用 IN 运算符
IN 用于匹配多个值中的一个,查询城市为 “北京”、”上海” 或 “广州” 的用户:
SELECT  FROM users WHERE city IN ('北京', '上海', '广州'); 
| 条件 | 结果 | 
|---|---|
| city IN ('北京') | 返回城市为北京、上海或广州的记录 | 
使用 LIKE 进行模糊查询
LIKE 结合通配符 或 _ 实现模糊匹配,查询姓名以 “张” 开头的用户:

SELECT FROM users WHERE name LIKE '张%';
| 条件 | 结果 | 
|---|---|
| name LIKE '张%' | 返回姓名以“张”开头的记录 | 
使用 BETWEEN 和 NOT BETWEEN
BETWEEN 用于范围查询,查询年龄在 18 到 25 岁之间的用户:
SELECT FROM users WHERE age BETWEEN 18 AND 25;
| 条件 | 结果 | 
|---|---|
| age BETWEEN 18 AND 25 | 返回年龄在18到25岁之间的记录 | 
组合多种运算符
查询年龄大于 30 岁且城市为 “北京”,或者年龄小于 20 岁的用户:
SELECT FROM users WHERE (age > 30 AND city = '北京') OR age < 20;
| 条件组1 | 条件组2 | 结果 | 
|---|---|---|
| age > 30 | age < 20 | 返回满足任一条件的记录 | 
| city = '北京' | 
注意事项
- 引号使用:字符串值需用单引号(’)包裹,数值无需引号。
- 优先级:AND优先级高于OR,建议用括号明确逻辑。
- 性能优化:避免在条件中对字段使用函数(如 UPPER(name)),这可能导致索引失效。
FAQs
问题1:如何查询工资在 5000 到 10000 之间且部门为“技术部”的员工?
解答:使用 BETWEEN 和 AND 组合条件:

SELECT FROM employees WHERE salary BETWEEN 5000 AND 10000 AND department = '技术部';
问题2:如何查询姓名为“李四”或“王五”且状态为“活跃”的用户?
解答:结合 OR 和 AND,并用括号分组:
SELECT FROM users WHERE (name = '李四' OR name = '王五') AND status =
 
  
			