IN 的批量查询方式,写起来简单,查起来也快,挺适合初学 SQL 时上手练练的。像查住在“北京”、“上海”、“西安”、“成都”的用户,用一条 IN
就能搞定,比一个个 OR
拼条件方便多了。
语法也没啥复杂的,直接这样写:
SELECT AuthorName, City
FROM Authors
WHERE City IN ('北京','上海','西安','成都')
比你一个个写 City = '北京' OR City = '上海'
省事多了吧?嗯,主要适合数据集是固定值的场景,像城市、分类、标签这些。
不过要注意,IN 是精确匹配,不是模糊匹配哦,模糊查询还是得靠 LIKE
。如果你想查包含“京”字的城市,那得这么写:
WHERE City LIKE '%京%'
所以别搞混了,IN 适合枚举,LIKE 适合模糊搜索。想结合起来用?可以考虑自己写逻辑拼接或者用 REGEXP
(某些数据库支持)。
对了,下面这些相关文章也挺不错的,入门到进阶的都有:
- SQL 模糊查询 - LIKE 用法整理
- OracleSQL WHERE 条件查询教程 - Oracle 党看这个
- SQL 查询满足条件的元组 WHERE 子句常用查询条件详解 - WHERE 全解析
- 模糊查询 LIKE SQL2000 应用 - 经典 LIKE 案例
- 分组查询:对比 WHERE、GROUP BY 和 HAVING - 搞清楚分组逻辑
- 模糊查询—IN-Sqlsever 实现 - SQL Server 版 IN 技巧
- SQLite 中文模糊查询支持 - SQLite 下的坑和方案
如果你刚开始学 SQL,建议先把 WHERE 和 IN 的基础吃透,再搞 LIKE 和复杂逻辑,会轻松不少。