互联网行业黑话全解析:从战略到技术的沟通解码指南
2026/8/1 6:05:02
BETWEEN ... AND ...用于判断某个字段的值是否在一段“连续区间”之内(包括区间的起点和终点)。
SELECT*FROMordersWHEREtotal_priceBETWEEN100AND200;含义:所有 total_price 大于等于 100 且小于等于 200 的订单。
SELECT*FROMordersWHEREorder_dateBETWEEN'2024-01-01'AND'2024-01-31';含义:所有下单日期在 1 月 1 日到 1 月 31 日之间的订单。
SELECT*FROMusersWHEREusernameBETWEEN'aaa'AND'mmm';含义:用户名在 ‘aaa’ 到 ‘mmm’ 字典序之间的用户。
column >= a AND column <= ba > b,结果可能为空或行为依赖于数据库实现。IN (value1, value2, ... valueN)用于判断某个字段是否等于给定的若干个具体值(离散集合)。
SELECT*FROMemployeesWHEREdepartment_idIN(1,2,5,8);含义:部门号为1、2、5、8的员工。
SELECT*FROMstudentsWHEREnameIN('Alice','Bob','Cathy');含义:名字是 Alice、Bob 或 Cathy 的学生。
SELECT*FROMordersWHEREcustomer_idIN(SELECTidFROMcustomersWHEREvip=1);含义:下单人是 “VIP 客户” 的订单。
IN里面的值,可以是任何类型,只要和字段类型对应即可。NOT IN表示“不在这些值”。IN的筛选是**“任意一个匹配即可”**。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 ...) |
查找出生日期是 2000 年 1 月 1 日至 2000 年 12 月 31 日内的员工
BETWEENSELECT*FROMemployeesWHEREbirthdayBETWEEN'2000-01-01'AND'2000-12-31';查找部门在 1、3、5号的员工
INSELECT*FROMemployeesWHEREdepartment_idIN(1,3,5);错误用法举例
-- 错误,用 BETWEEN 查离散值,等价于 BETWEEN 1 AND 5,会返回 2、3、4 都被查出SELECT*FROMemployeesWHEREdepartment_idBETWEEN1AND5;实际只要 1、3、5应该用
SELECT*FROMemployeesWHEREdepartment_idIN(1,3,5);