IN运算符允许您确定指定的值是否与列表中的值或子查询中的任何值匹配。 下面说明了IN操作符的语法

1
2
3
4
5
6
SELECT 
    column1,column2,...
FROM
    table_name
WHERE 
 (expr|column_1) IN ('value1','value2',...);

下面我们更详细的来看看上面的查询:

  • 可以在 WHERE 子句中与IN运算符一起使用,可使用列或表达式(expr)。
  • 列表中的值必须用逗号()分隔。
  • IN操作符也可以用在其他语句(如 INSERT,UPDATE,DELETE等)的 WHERE子 句中。

如果column_1的值或expr表达式的结果等于列表中的任何值,则IN运算符返回1,否则返回0

当列表中的值都是常量时:

  • 首先,MySQL根据column_1的类型或expr表达式的结果来计算值。
  • 第二步,MySQL排序值。
  • 第三步,MySQL使用二进制搜索算法搜索值。因此,使用具有常量列表的IN运算符的查询将执行得非常快。

请注意,如果列表中的expr或任何值为NULL,则IN运算符计算结果返回NULL

可以将IN运算符与NOT运算符组合,以确定值是否与列表或子查询中的任何值不匹配。

参考资料