MySQL IN 条件

2025年8月25日 | 6 分钟阅读

IN 运算符是一个逻辑运算符,它允许我们检查数据库中的值是否存在于 MySQL 语句中定义的值列表中。

MySQL IN 条件用于在 SELECT、INSERT、UPDATE 和 DELETE 语句中减少多个 OR 条件的使用。

在本文中,我们将通过各种工作示例详细解释 MySQL IN 条件的概念。

语法

参数

  • SELECT: 用于从表中获取数据。
  • Table: 从中检索数据的表的名称。
  • columnname: 用于比较值。
  • value1, value2, 或 value_n: 这些是用于与表达式进行测试的值。如果这些值中的任何一个与表达式匹配,则 IN 条件将评估为 true。这是

MySQL IN 示例

考虑一个名为 "officers" 的表,包含以下数据。

MySQL IN Condition

执行以下查询

解释: 在上面的 select 查询中,IN 运算符用于从 "officers" 表中检索 officer_name 为 'Ajeet'、'Vimal' 或 'Deepika' 的所有信息。

输出: 表的输出如下所示。

MySQL IN Condition

让我们看看为什么它比 OR 条件更受青睐

执行以下查询

解释: 在上面的 select 查询中,OR 运算符用于从 "officers" 表中检索 officer_name 为 'Ajeet'、'Vimal' 或 'Deepika' 的所有信息。

输出: 以下是表的输出。

MySQL IN Condition

它也产生相同的结果。因此,IN 条件比 OR 条件更受青睐,因为它的代码量更少。

使用 IN 运算符比较列值

我们也可以将 IN 运算符与列名一起使用,以比较一列与另一列的值。它用于选择包含给定列特定值的行。

让我们以 "Teachers 表" 为例,选择包含 qualification 列中值的行。

TIDT_Name资格验证 (Qualification)薪金
1AnshuBCA10000
2HarshitaMCA25000
3拉曼 (Raman)MCA30000
4RubyM.Tech15000
5SumanMCA20000

示例

解释: 在上面,select 查询用于从 "Teacher 表" 中检索记录,其中教师姓名与薪水低于 30000 的记录一起被检索。

输出:运行此查询后,下面是表的输出。

TIDT_Name资格验证 (Qualification)薪金
1AnshuBCA10000
2HarshitaMCA25000
4RubyM.Tech15000
5SumanMCA20000

MySQL 子查询与 IN 运算符

我们可以将 子查询 与 IN 运算符一起使用,以从单个列中返回记录。将子查询与 IN 运算符一起使用的主要目的是将列值与多个值进行比较。

语法

示例

解释: 在上面的 select 查询中,IN 运算符用于比较薪水低于 30000 的教师的姓名。

输出: 执行上述查询后,表的输出如下所示。

TIDT_Name资格验证 (Qualification)薪金
1AnshuBCA10000
2HarshitaMCA25000
4RubyM.Tech15000
5SumanMCA20000

使用 MySQL IN 条件进行更新操作

更新操作用于更新表中的记录。以包含以下信息的 Teacher 表为例。如果您想更新学历为 BCA 或 MCA 的教师的薪水。

TIDT_Name资格验证 (Qualification)薪金
1AnshuBCA10000
2HarshitaMCA25000
3拉曼 (Raman)MCA30000
4RubyM.Tech15000
5SumanMCA20000

解释: 在上面的 update 查询中,IN 运算符用于检查教师的学历是否为 BCA 或 MCA,并相应地更新教师的薪水。

输出:运行此查询后,下面是表的输出。

TIDT_Name资格验证 (Qualification)薪金
1AnshuBCA12000
2HarshitaMCA27000
3拉曼 (Raman)MCA32000
5SumanMCA22000

使用 MySQL IN 条件进行删除操作

删除操作用于从表中删除现有行。以包含以下信息的 Teacher 表为例。如果您想删除学历为 BCA 或 M.Tech 的教师的信息。

TIDT_Name资格验证 (Qualification)薪金
1AnshuBCA10000
2HarshitaMCA25000
3拉曼 (Raman)MCA30000
4RubyM.Tech15000
5SumanMCA20000

解释: 在上面的 delete 查询中,IN 运算符用于检查教师的学历是否为 BCA 或 MTech,并相应地删除信息。

输出: 执行上述查询后,表的输出如下所示。

TIDT_Name资格验证 (Qualification)薪金
2HarshitaMCA27000
3拉曼 (Raman)MCA32000
5SumanMCA22000

MySQL NOT IN 条件

MySQL IN 运算符可以与 NOT 运算符 结合使用,以在 WHERE 子句中排除特定值。它只是反转了 IN 运算符的概念。

语法

示例

解释: 在上面的 select 查询中,NOT IN 运算符用于检查教师的学历是否不是 BCA 或 M.Tech,并相应地检索信息。

输出:运行此查询后,下面是表的输出。

TIDT_Name资格验证 (Qualification)薪金
2HarshitaMCA27000
3拉曼 (Raman)MCA32000
5SumanMCA22000

关于 MySQL IN 条件的常见问题

1. MySQL 中的 IN 运算符和 OR 运算符有什么区别?

答案: 以下是 IN 运算符和

OR 运算符之间的区别。

序号IN 运算符OR 运算符
1.当您想要选择所有匹配特定值集的行时,这很有用。当您想要选择所有匹配多个条件之一的行时,这很有用。
2.它比 OR 运算符更快。与 IN 运算符相比,它较慢。
3.易于理解。难以理解。
4.例如
SELECT * FROM officers
WHERE officer_name IN ('Ajeet', 'Vimal', 'Deepika');
例如
SELECT * FROM officers
WHERE officer_name = 'Ajeet'
OR officer_name = 'Vimal'
OR officer_name = 'Deepika';

2. 列出 MySQL IN 运算符的各种缺点?

答案: 以下是 IN 运算符的各种缺点。

  • 将 IN 运算符与大量值列表一起使用可能会导致性能问题并减慢执行速度。
  • 它无法有效处理 NULL 值,并可能返回不确定的结果。
  • 它只能使用子查询过滤有限数量的列。

3. MySQL IN 运算符的各种优点是什么?

答案: IN 运算符的各种优点如下。

  • 它用于过滤数据。
  • 它用于处理多个值。
  • 可与子查询一起使用

4. MySQL IN 运算符的各种替代方案是什么?

答案: MySQL IN 运算符的各种替代方案是

  • 使用 Exists 运算符
  • 使用 Joins 的概念
  • 使用公用表表达式
  • 使用临时表

下一主题MySQL ANY