MySQL 中 IN 的用法
相关博客
基本语法
IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择。有IN 和 NOT IN 两种运算,分别表示可选列表项和非可选的列表项。
WHERE column IN (value1,value2,value2)
常规用法
1. 固定列表项中查找或排除某些项
SELECT * FROM user WHERE uid IN (2,3,4)
SELECT * FROM user WHERE uid NOT IN (2,3,4)
2. 子查询,即列表项是 SELECT 语句
SELECT * FROM article WHERE uid IN(
SELECT uid FROM user WHERE status=0
)
SELECT * FROM article WHERE uid NOT IN(
SELECT uid FROM user WHERE status=0
)
3. 多字段查询。
一个 IN 只能对一个字段进行范围比对,如果要指定更多字段,可以使用 AND 或 OR 逻辑运。 使用 AND 或 OR 逻辑运算符后,IN 还可以和其他如 LIKE、>=、= 等运算符一起使用。
SELECT * FROM user WHERE uid IN (2,3,4) OR username IN ("aa","bb")
SELECT * FROM article WHERE uid NOT IN(
SELECT uid FROM user WHERE status=0
)
AND uid IN (2,3,4)
补充说明
- 如果列表项是确定的,即没有子查询,IN 运算可以用来简化 OR 语句。对于子查询,一般认为OR 效率更高。
- 尽管效率不及 OR ,对于列表项不确定的时候(如需要子查询得到结果),就必须使用 IN 运算符。
- 对于子查询表数据小于主查询的时候,也是适用 IN 运算符的。
参考
- MySQL IN 用法
- [mysql in 子查询 效率慢 优化]https://www.cnblogs.com/xh831213/archive/2012/05/09/2491272.html
- 极客学院 MySQL IN 子句