Mysql 简明教程

MySQL - IN Operator

MySQL In Operator

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

IN 运算符可用于 SQL 中的任何数据类型。它用于根据指定的值从数据库表中筛选数据。它返回指定列值与列表中的任何一个值匹配的所有行。

在某些情况下,我们可能会使用多个 OR 语句在 SELECT、DELETE、UPDATE 或 INSERT 语句中包含多个条件。您可以使用 IN 子句替换许多 OR 条件

Syntax

以下是 IN 运算符的基本语法 −

WHERE COLUMN_NAME IN (value1, value2, value3,....);

Example

要理解 IN 子句,让我们首先使用以下 CREATE TABLE 语句创建一个名为 CUSTOMERS 的表 −

CREATE TABLE CUSTOMERS (
 ID INT NOT NULL,
 NAME VARCHAR (20) NOT NULL,
 AGE INT NOT NULL,
 ADDRESS CHAR (25),
 SALARY DECIMAL (18, 2),
 PRIMARY KEY (ID)
);

现在,使用 INSERT 语句插入以下记录 −

INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00),
(2, 'Khilan', 25, 'Delhi', 1500.00),
(3, 'Kaushik', 23, 'Kota', 2000.00),
(4, 'Chaitali', 25, 'Mumbai', 6500.00),
(5, 'Hardik', 27, 'Bhopal', 8500.00),
(6, 'Komal', 22, 'Hyderabad', 4500.00),
(7, 'Muffy', 24, 'Indore', 10000.00);

该表将按如下方式创建:

使用以下查询,从 CUSTOMERS 表中检索名称为“Khilan”、“Hardik”、“Muffy”的记录 −

SELECT * FROM CUSTOMERS
WHERE NAME IN ('Khilan', 'Hardik', 'Muffy');

Output

获得的输出如下 −

The IN Operator in UPDATE statement

MySQL UPDATE 语句用于修改数据库表中的现有数据。因此,我们还可以在 UPDATE 语句中使用 IN 运算符(作为筛选器)来更新现有行。

Example

在此示例中,让我们将年龄为“25”或“27”的客户的记录更新为“30” −

UPDATE CUSTOMERS
SET AGE = 30 WHERE AGE IN (25, 27);

Verification

我们可以使用 SELECT 语句检索表的记录内容来验证更改是否反映在表中。使用以下查询来显示 CUSTOMERS 表中的更新记录 −

MySQL NOT IN operator

为了否定一个条件,我们使用 NOT 运算符。MySQL IN 运算符可以与 NOT 运算符结合使用,以在 WHERE 子句中排除特定值。

In other words, the absence of a list from an expression will be checked.

Syntax

接下来是 NOT IN 运算符的基本语法:

WHERE column_name NOT IN (value1, value2,...);

Example

Now, we are trying to display all the records from the CUSTOMERS table, where the AGE is NOT equal to '25', '23' and '22' −

SELECT * FROM CUSTOMERS
WHERE AGE NOT IN (25, 23, 22);

Output

获得的输出为 −

Comparing Values Using IN Operator

我们可以使用 IN 运算符连同列名来将某个列的值与另一个列的值进行比较。此运算符用于选择特定值存在于给定列的那些行。

Example

在下面的查询中,我们尝试选择包含 SALARY 列值的那些行 −

SELECT * FROM CUSTOMERS
WHERE 2000 IN (SALARY);

Output

获得以下输出 −

MySQL Subquery with IN operator

我们可以使用子查询和 IN 运算符来返回来自单列的记录。这意味着 SELECT 列列表中的不止一列不能包含在指定子查询中。

Syntax

IN 运算符的基本语法如下 −

WHERE column_name IN (subquery);

Example

在下面给出的查询中,我们显示了 CUSTOMERS 表中所有记录,其中的客户 NAME 是通过 SALARY 大于 2000 获得的 −

SELECT * FROM CUSTOMERS
WHERE NAME IN (
   SELECT NAME FROM CUSTOMERS
   WHERE SALARY > 2000
);

Output

获得以下输出 −

In Operator Using Client Program

除了直接在 MySQL 服务器中执行 IN 运算符,我们还可以使用客户端程序执行此操作。

Syntax

以下是在各种编程语言中使用 IN 运算符的语法 −

Example

以下是该操作在各种编程语言中的实现 −