BETWEEN
筛选某个区间内的数据
简介
BETWEEN 用于表达包含两端的闭区间,相当于同时写 >= 下界和 <= 上界。它适合金额、编号和完整日期的范围筛选;处理带时间的字段时,月底 23:59:59 并不是可靠上界,通常应改用“>= 起点且 < 下一周期起点”的半开区间。上下界顺序写反不会自动交换。
基础语法
SELECT * FROM orders WHERE amount BETWEEN 500 AND 1500;
示例
BETWEEN 示例
筛选金额在 500 到 1500 之间的订单,并验证 500 和 1500 两个边界值都属于范围。
示例数据表
表名:
orders| id | customer_id | product_id | name | department | amount | status | created_at | discount |
|---|---|---|---|---|---|---|---|---|
| 1 | 101 | 201 | Alice | Sales | 1200 | paid | 2026-01-03 | 0 |
| 2 | 102 | 202 | Bob | IT | 900 | pending | 2026-01-08 | 50 |
| 3 | 101 | 201 | Cindy | Sales | 1500 | paid | 2026-02-02 | 100 |
| 4 | 104 | 203 | David | HR | 700 | cancelled | 2026-02-15 | 0 |
运行结果
| id | customer_id | product_id | name | department | amount | status | created_at | discount |
|---|---|---|---|---|---|---|---|---|
| 1 | 101 | 201 | Alice | Sales | 1200 | paid | 2026-01-03 | 0 |
| 2 | 102 | 202 | Bob | IT | 900 | pending | 2026-01-08 | 50 |
| 3 | 101 | 201 | Cindy | Sales | 1500 | paid | 2026-02-02 | 100 |
| 4 | 104 | 203 | David | HR | 700 | cancelled | 2026-02-15 | 0 |
常见问题
边界值会不会被包含?
先确认运算符语义;BETWEEN 包含两端,而大于和小于是否带等号会直接改变结果。
AND 与 OR 混用怎样避免误判?
用括号明确业务分组,不要依赖读者记忆运算符优先级。
遇到 NULL 为什么条件没有命中?
NULL 表示未知,比较结果可能不是 TRUE;应使用 IS NULL 或明确的空值处理。
标签
这篇内容是否清楚?
感谢反馈,我们会把它用于后续内容复核。