完全可以 ,而且是非常常用的组合!IN 是范围匹配条件,AND 是多条件同时满足的逻辑符,二者搭配能精准筛选出符合多个规则的数据。
一、最常用场景:WHERE 子句中组合
在 WHERE 筛选条件里,用 AND 把 IN 条件和其他条件拼接,所有条件必须同时成立。
示例 1:基础搭配
有一张用户表 users,筛选:
- 年龄在 20、25、30 岁(IN)
- 并且 性别为女(AND)
- 并且 城市是北京(AND)
sql
SELECT *
FROM users
WHERE
age IN (20, 25, 30) -- IN条件
AND gender = '女' -- AND 拼接其他条件
AND city = '北京'; -- AND 拼接其他条件
示例 2:多个 IN 条件用 AND 连接
筛选:
- 部门是 技术部 / 产品部(IN)
- 并且 职位是 工程师 / 设计师(IN)
sql
SELECT *
FROM employees
WHERE
department IN ('技术部', '产品部')
AND position IN ('工程师', '设计师');
二、进阶场景:子查询中使用
IN 后面跟子查询时,也能用 AND 组合条件:
sql
SELECT *
FROM orders
WHERE
user_id IN (
SELECT id
FROM users
WHERE age >= 18 -- 子查询内部的AND条件
AND status = '正常'
)
AND order_status = '已支付'; -- 主查询的AND条件
三、核心注意事项
- 逻辑优先级 :
IN的优先级高于AND,无需额外加括号(复杂逻辑建议加括号提升可读性) - 语法规则 :
AND必须连接完整的条件表达式 ,不能写错误语法:❌ 错误:age IN (20,25) AND (30)✅ 正确:age IN (20,25,30)
总结
IN+AND是 SQL合法且常用的组合;- 用途:同时满足「范围匹配」+「其他固定条件」;
- 核心:所有通过
AND连接的条件,必须全部成立才会返回数据。