MySQL IN 运算符

MySQL IN 运算符用于限制 SELECT 语句返回的总行数。IN 运算符会检查给定的表达式是否与其中包含的值匹配。如果至少有一个匹配项,则 SELECT 语句将返回记录。

请使用 IN 运算符将表达式或条件与多个值进行比较,其基本语法如下:

SELECT [Column Names] 
FROM [Source]
WHERE [Column_Name] IN (Value1,...., ValueN)

-- Use OR to write the above statement
SELECT [Column Names]
FROM [Source]
WHERE [Column_Name] = Value1 OR [Column_Name] = ValueN

在此 IN 运算符示例中,我们使用了如下数据。

Customer Table

MySQL IN 运算符示例

在此示例中,我们使用此运算符检查数值。

SELECT 3 IN (1, 2, 3, 4, 5);

SELECT 6 IN (1, 2, 3, 4, 5);

SELECT 3.5 IN (1, 2, 3, 4, 5);
Simple Example 1

我将使用 in 运算符检查字符串数据。在第三条语句中,我们使用了混合值。在实际情况中,这可能会产生奇怪的结果,因此请始终在此处使用单一数据类型。

SELECT 'abc' IN ('xyz', 'hi', 'abc', 'ab');

SELECT 'a' IN ('xyz', 'hi', 'abc', 'ab');

SELECT 4 IN (1, 3, 4, '5');

与使用混合值相反,我们必须使用任何单一的 MySQL 类型。因此,SELECT 语句将给出准确的结果。

SELECT 4 IN ('1',' 3', '4', '5');

SELECT (10, 20) IN ((1,2), (10, 20), (100, 200));

SELECT 3 IN (1, 3, NULL, 4);
IN Operator Example 3

MySQL IN 运算符的实际示例

以下查询查找收入为 80000 或 90000 的客户

SELECT EmpID, 
       `First Name`,
       `Last Name`,
       Qualification,
       Occupation,
       Income,
       Sales,
       HireDate
 FROM customer
 WHERE Income IN (80000, 90000);
MySQL IN Operator Numeric Values 5

为了更好地理解,我将向您展示另一个示例。以下查询返回收入为 50000、80000 或 90000 的客户

SELECT EmpID, 
       `First Name`,
       `Last Name`,
       Qualification,
       Occupation,
       Income,
       Sales,
       HireDate
 FROM customer
 WHERE Income IN (50000, 80000, 90000);
Numeric Values 6

字符串列上的 IN 运算符示例

这次,我们使用的是字符串数据。以下查询查找学历为学士学位或硕士学位的客户。

SELECT EmpID, 
       `First Name`,
       `Last Name`,
       Qualification,
       Occupation,
       Income,
       Sales,
       HireDate
 FROM customer
 WHERE Qualification IN ('Bachelors', 'Masters Degree');
IN Operator String Example 7

IN 运算符和 ORDER BY 子句

您还可以将 ORDER BY 子句与此一起使用。此查询返回学历为学士、硕士或教育的客户。接下来,ORDER BY 子句根据收入按升序对结果进行排序。

SELECT EmpID, 
       `First Name`,
       `Last Name`,
       Qualification,
       Occupation,
       Income,
       Sales,
       HireDate
 FROM customer
 WHERE Qualification IN ('Bachelors', 'Masters Degree', 'Education')
 ORDER BY Income;
IN Operator 8