前言学会了 SELECT 基础查询之后很多新手又卡在这里查出全表几百上千条数据不会精准筛选找不到想要的记录只会简单等于判断多条件、区间范围完全不会写分不清IN和什么时候用、BETWEEN边界搞不清楚2026 面试高频考点WHERE 条件多组合、区间匹配、集合筛选经常被问工作做报表、统计用户、筛选订单全靠条件 mql写不对直接业务数据出错。本篇手把手带你吃透WHERE 基础条件、多条件 AND/OR、IN 集合匹配、BETWEEN 区间范围大白话讲解 实战案例 可直接运行 SQL学完就能胜任日常数据筛选工作。知识点精讲一、WHERE 是什么WHERE是 SQL 用来按条件筛选行记录的关键字放在FROM后面。 作用从整张表中只取出满足条件的数据不满足的直接过滤掉。 语法格式sqlSELECT 字段列表 FROM 表名 WHERE 筛选条件;二、WHERE 常用比较运算符表格运算符含义等于 / !不等于大于小于大于等于小于等于三、多条件逻辑符 AND / ORAND两边条件同时满足相当于「并且」OR两边条件满足其一即可相当于「或者」四、IN 集合匹配IN匹配多个固定值中的任意一个 适合字段值在指定一组选项里的场景代替多个OR拼接。 语法sqlWHERE 字段 IN (值1,值2,值3...)五、BETWEEN ... AND ... 区间范围BETWEEN 最小值 AND 最大值特点包含左右边界闭区间等价于最小值 AND 最大值适合年龄、金额、分数、时间范围筛选。通俗类比 实例表格通俗类比SELECT * FROM user把所有人全部喊出来WHERE 年龄25只把刚好 25 岁的人挑出来IN (25,26,27)把25、26、27 任意一个年龄的人都挑出来BETWEEN 20 AND 30把20 到 30 岁之间含首尾的所有人挑出来演示数据表user 用户表表格idnameagegendercity1张三25男北京2李四22女上海3王五28男广州4赵六30女北京5孙七35男深圳SQL 代码演示1. 基础单条件查询sql-- 查询性别为男的用户 SELECT * FROM user WHERE gender 男; -- 查询年龄大于25岁的用户 SELECT * FROM user WHERE age 25; -- 查询不是北京的用户 SELECT * FROM user WHERE city 北京;2. AND 多条件同时满足sql-- 查询 北京 且 性别男 的用户 SELECT * FROM user WHERE city 北京 AND gender 男;3. OR 满足其一即可sql-- 北京 或者 上海 的用户 SELECT * FROM user WHERE city 北京 OR city 上海;4. IN 集合筛选sql-- 查询年龄是22、25、28的用户 SELECT * FROM user WHERE age IN (22,25,28); -- 查询指定城市的用户 SELECT * FROM user WHERE city IN (北京,广州,深圳);5. BETWEEN 区间筛选sql-- 年龄22~30岁之间包含22和30 SELECT * FROM user WHERE age BETWEEN 22 AND 30;易错 / 避坑点❌ BETWEEN 记成开区间、不包含首尾 ✅ 正解BETWEEN 是闭区间包含最小值和最大值。❌ 多个固定值条件还用一堆 OR 拼接 ✅ 正解直接用IN语句更简洁、可读性更强。❌ 字符串条件不加单引号 ✅ 正解字符串、日期必须加单引号数字不用。❌ AND 和 OR 混用不加分隔逻辑混乱 ✅ 正解复杂多条件建议用括号()明确优先级避免逻辑歧义。❌ 用匹配 NULL ✅ 正解WHERE 里判断空值只能用IS NULL / IS NOT NULL。核心小结WHERE用于行数据条件过滤写在 FROM 之后掌握基础比较运算符 ! AND同时满足、OR满足其一多条件组合必备IN适合多固定值匹配简化多个 ORBETWEEN AND做区间筛选包含首尾边界日常业务筛选用户、订单、报表统计全靠这几个语法组合。思考题思考题 1BETWEEN 20 AND 30 等价于什么条件写法答案 等价于age 20 AND age 30是闭区间包含两端数值。思考题 2查询城市为北京、上海、广州的所有用户用 IN 怎么写答案sqlSELECT * FROM user WHERE city IN (北京,上海,广州);思考题 3查询年龄大于 25 且性别为女的用户写出 SQL 语句。答案sqlSELECT * FROM user WHERE age 25 AND gender 女;