sql语句in用法 IN是 SQL 中用于筛选指定范围内数据的关键字作用是判断某列的值是否在给定的列表 / 子查询结果中替代多个OR条件让语句更简洁。一、基础语法sqlSELECT 列名 FROM 表名 WHERE 列名 IN (值1, 值2, 值3, ...);核心作用等价于列名 值1 OR 列名 值2 OR 列名 值3但写法更简洁。二、常用场景附实例假设有一张student学生表表格idnamegradecity1张三90北京2李四85上海3王五92北京4赵六78广州1. 匹配固定值列表最常用筛选城市是北京或上海的学生sqlSELECT * FROM student WHERE city IN (北京, 上海);结果张三、李四、王五2. 搭配数字类型筛选分数是 85、90、92的学生sqlSELECT * FROM student WHERE grade IN (85, 90, 92);3. NOT IN排除指定值筛选城市不是北京、上海的学生sqlSELECT * FROM student WHERE city NOT IN (北京, 上海);结果赵六三、进阶用法IN 子查询IN可以嵌套子查询查询结果作为筛选范围不用手动写死值。例有一张high_score高分表存储高分学生 id表格id13筛选在高分表中的学生sqlSELECT * FROM student WHERE id IN (SELECT id FROM high_score);结果张三、王五四、注意事项必看IN 列表的值类型必须一致字符串加引号数字不加不能混用sql-- 错误 WHERE city IN (北京, 上海) -- 正确 WHERE city IN (北京, 上海)NOT IN 遇到 NULL 会无结果如果子查询返回NULLNOT IN会直接返回空数据尽量避免。IN 适合少量固定值范围极大时上千个值建议用JOIN替代效率更高。IN 可以用在多列吗部分数据库MySQL、Oracle支持极少用了解即可sqlSELECT * FROM student WHERE (name, city) IN ((张三,北京), (李四,上海));五、IN 与 OR 的对比sql-- 用 OR繁琐 SELECT * FROM student WHERE city北京 OR city上海 OR city广州; -- 用 IN简洁 SELECT * FROM student WHERE city IN (北京,上海,广州);功能完全一致IN 可读性更强。总结IN用于判断值是否在指定列表中简化多OR条件语法列名 IN (值1,值2...)/列名 NOT IN (...)支持固定值和子查询两种用法注意值类型统一NOT IN避开NULL。