news 2026/2/27 4:41:57

SQL 中 BETWEEN 和 IN 的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL 中 BETWEEN 和 IN 的区别

一、BETWEEN 详细说明

1.1 用法

BETWEEN ... AND ...用于判断某个字段的值是否在一段“连续区间”之内(包括区间的起点和终点)。

1.2 适用的数据类型

  • 数值类型(如 int, float)
  • 日期或时间类型(如 date, datetime, timestamp)
  • 字符串类型(会依据排序的字典序)

1.3 例子

1.3.1 数值
SELECT*FROMordersWHEREtotal_priceBETWEEN100AND200;

含义:所有 total_price 大于等于 100 且小于等于 200 的订单。

1.3.2 日期
SELECT*FROMordersWHEREorder_dateBETWEEN'2024-01-01'AND'2024-01-31';

含义:所有下单日期在 1 月 1 日到 1 月 31 日之间的订单。

1.3.3 字符串
SELECT*FROMusersWHEREusernameBETWEEN'aaa'AND'mmm';

含义:用户名在 ‘aaa’ 到 ‘mmm’ 字典序之间的用户。

1.4 注意事项

  • 包括边界值,即等价于column >= a AND column <= b
  • 如果a > b,结果可能为空或行为依赖于数据库实现。
  • 对字符串来说,排序由数据库字符集决定,不常用于字符串筛选。

1.5 不能乱用的场景

  • 非连续的多值筛选(如只要A、B、C,不要A到C之间全部),不适用。

二、IN 详细说明

2.1 用法

IN (value1, value2, ... valueN)用于判断某个字段是否等于给定的若干个具体值(离散集合)。

2.2 适用的数据类型

  • 数值
  • 字符串
  • 日期/时间
  • 甚至支持子查询

2.3 例子

2.3.1 数值集合
SELECT*FROMemployeesWHEREdepartment_idIN(1,2,5,8);

含义:部门号为1、2、5、8的员工。

2.3.2 字符串集合
SELECT*FROMstudentsWHEREnameIN('Alice','Bob','Cathy');

含义:名字是 Alice、Bob 或 Cathy 的学生。

2.3.3 子查询
SELECT*FROMordersWHEREcustomer_idIN(SELECTidFROMcustomersWHEREvip=1);

含义:下单人是 “VIP 客户” 的订单。

2.4 注意事项

  • IN里面的值,可以是任何类型,只要和字段类型对应即可。
  • 当集合内值较多时,内部会自动优化(但上千个值效率一般不如临时表)。
  • NOT IN表示“不在这些值”。
  • IN的筛选是**“任意一个匹配即可”**。

2.5 不能乱用的场景

  • 区间判断(如 2 到 10 之间所有整数),不用IN,应用BETWEEN

三、扩展对比表

使用场景推荐用法代码示例
连续区间查找BETWEEN ... AND ...score BETWEEN 80 AND 100
离散多个值查找IN (...)city IN ('Beijing', 'Shanghai', 'Guangzhou')
排除某集合NOT IN (...)user_id NOT IN (123, 456, 789)
区间筛选排除不推荐用 IN,有风险应使用区间条件price < 100 OR price > 200
子集判断IN (子查询)product_id IN (SELECT id FROM products WHERE ...)

四、举例说明区别

  1. 查找出生日期是 2000 年 1 月 1 日至 2000 年 12 月 31 日内的员工

    • 推荐BETWEEN
    SELECT*FROMemployeesWHEREbirthdayBETWEEN'2000-01-01'AND'2000-12-31';
  2. 查找部门在 1、3、5号的员工

    • IN
    SELECT*FROMemployeesWHEREdepartment_idIN(1,3,5);
  3. 错误用法举例

    -- 错误,用 BETWEEN 查离散值,等价于 BETWEEN 1 AND 5,会返回 2、3、4 都被查出SELECT*FROMemployeesWHEREdepartment_idBETWEEN1AND5;

    实际只要 1、3、5应该用

    SELECT*FROMemployeesWHEREdepartment_idIN(1,3,5);

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/25 10:19:41

多模态骨骼检测方案:RGBD相机+云端AI,精度提升40%

多模态骨骼检测方案&#xff1a;RGBD相机云端AI&#xff0c;精度提升40% 引言 在康复机器人领域&#xff0c;精确的人体骨骼检测是核心技术之一。传统单目摄像头方案存在一个致命问题&#xff1a;由于缺乏深度信息&#xff0c;检测误差经常超过10cm&#xff0c;严重影响康复训…

作者头像 李华
网站建设 2026/2/24 15:42:55

医疗康复评估系统:高精度骨骼点检测云端方案

医疗康复评估系统&#xff1a;高精度骨骼点检测云端方案 引言 在康复医疗领域&#xff0c;精确测量患者关节活动度是评估康复效果的关键指标。传统方法依赖昂贵的医疗级检测设备&#xff0c;动辄数十万元的投入让许多中小型康复机构望而却步。现在&#xff0c;基于AI的骨骼点…

作者头像 李华
网站建设 2026/2/26 15:07:11

从零开始使用AI人脸隐私卫士:本地离线人脸打码教程

从零开始使用AI人脸隐私卫士&#xff1a;本地离线人脸打码教程 1. 引言 1.1 学习目标 在数字化时代&#xff0c;图像和视频中的人脸信息极易被滥用&#xff0c;尤其是在社交媒体、监控系统或公开资料发布场景中。如何在不依赖云端服务的前提下&#xff0c;快速、安全地对敏感…

作者头像 李华
网站建设 2026/2/25 17:13:45

AI手势识别如何嵌入App?移动端集成路径详解

AI手势识别如何嵌入App&#xff1f;移动端集成路径详解 1. 引言&#xff1a;AI 手势识别与人机交互新范式 随着智能设备的普及和用户对自然交互方式的需求增长&#xff0c;AI手势识别技术正逐步从实验室走向消费级应用。传统触控操作虽成熟稳定&#xff0c;但在特定场景下&am…

作者头像 李华
网站建设 2026/2/26 16:04:28

亲测好用9个AI论文网站,助本科生轻松搞定毕业论文!

亲测好用9个AI论文网站&#xff0c;助本科生轻松搞定毕业论文&#xff01; AI 工具如何成为论文写作的得力助手 在当前高校教育中&#xff0c;毕业论文已成为本科生必须面对的重要任务。随着人工智能技术的发展&#xff0c;越来越多的 AI 工具被引入到学术写作中&#xff0c;帮…

作者头像 李华
网站建设 2026/2/26 14:34:12

多角度手部检测准吗?AI手势识别泛化能力测试

多角度手部检测准吗&#xff1f;AI手势识别泛化能力测试 1. 引言&#xff1a;AI 手势识别与人机交互的边界挑战 随着智能硬件和自然用户界面&#xff08;NUI&#xff09;的发展&#xff0c;AI手势识别正逐步从实验室走向消费级应用。无论是AR/VR中的虚拟操控、智能家居的隔空…

作者头像 李华