BETWEEN 与 IN要点
- BETWEEN a AND b 包含两端边界,等价于 ≥ a 且 ≤ b
- BETWEEN 常用于日期段、价格段、分数段这类连续范围
- IN (值1, 值2, ...) 一次匹配多个离散值,等于一串 OR
- IN 里的值会走索引,比手写的多个 OR 更稳定
- NOT IN 反向排除,但列表里含 NULL 时要格外小心
- 区间与清单可叠加,例如日期段内且状态在清单中
BETWEEN 与 IN示例
SELECT * FROM orders
WHERE created_at BETWEEN '2024-01-01' AND '2024-12-31';
SELECT * FROM user
WHERE city IN ('Beijing', 'Shanghai', 'Guangzhou');
SELECT * FROM product
WHERE price BETWEEN 50 AND 200 AND category IN ('book', 'toy');
避坑提醒:BETWEEN 的边界是闭区间,写日期段时结束那天也会被算进去,跨天统计别漏掉这一个点。