如何使用between语句_mysql范围查询示例

来源:这里教程网 时间:2026-02-28 20:34:02 作者:

BETWEEN 是 MySQL 中用于范围查询的简洁语法,等价于两个条件的组合(

>=
),常用于数字、日期、字符串等类型的连续区间筛选。

基本语法与等价写法

BETWEEN 的标准写法是:

column BETWEEN value1 AND value2
,表示列值在
value1
value2
之间(含端点)。它等价于:
column >= value1 AND column 。

注意:BETWEEN 是**闭区间**,两端值都会被包含 value1 必须小于或等于 value2,否则结果恒为空(MySQL 不报错但不返回数据) 可用于数值、日期时间(如
DATETIME
)、字符类型(按字典序比较)

数值范围查询示例

查出价格在 50 到 200 元之间的商品:

SELECT * FROM products WHERE price BETWEEN 50 AND 200;

等价写法:

SELECT * FROM products WHERE price >= 50 AND price <= 200;

若想排除边界(如只查 51~199),就不能用 BETWEEN,需手动改写为

> 50 AND 。

日期范围查询常用场景

查 2024 年整年的订单(假设

order_time
DATETIME
类型):

SELECT * FROM orders 
WHERE order_time BETWEEN '2024-01-01' AND '2024-12-31 23:59:59';

⚠️ 注意:如果字段含时间部分,仅写

'2024-12-31'
相当于
'2024-12-31 00:00:00'
,会漏掉当天其他时间的数据。更安全的做法是用左闭右开:
>= '2024-01-01' AND ,但 BETWEEN 本身不支持开区间。

配合 NOT 使用排除范围

查价格**不在** 100~150 区间的商品:

SELECT * FROM products WHERE price NOT BETWEEN 100 AND 150;

等价于:

price  150
。适合快速过滤“异常值”或“非主流区间”。

字符串也能用 BETWEEN(按排序规则)

查姓名以 A~M 开头的用户(基于默认字符集排序):

SELECT * FROM users WHERE name BETWEEN 'A' AND 'Mz';

⚠️ 字符串比较依赖排序规则(collation),且

'M'
'Mz'
边界需谨慎测试。例如
'Ma'
'Mn'
都满足,但
'Mz'
是为了覆盖所有 M 开头的常见情况(实际建议用
LIKE 'M%'
更直观)。

相关推荐