Sql 简明教程
SQL - IN Operator
The SQL IN Operator
SQL IN Operator 用于在 WHERE 子句中指定多个值或子查询。它返回其中指定的列与列表中的一个值匹配的所有行。值或子查询列表必须用括号指定,例如 IN (select query) 或 IN (Value1, Value2, Value3, …) 。
在某些情况下,我们可以使用多个 OR 语句来在 SELECT、DELETE、UPDATE 或 INSERT 语句中包含多个条件。或者,我们可以使用 IN 运算符而不是多个 OR 语句。
IN 运算符可用于 SQL 中的任何数据类型。它用于根据指定的值从数据库表中筛选数据。
IN Operator with SELECT Statement
我们可以使用 SQL IN 运算符在 WHERE 子句中指定多个值,还可以使用它在 SELECT 语句中检索与任何指定值匹配的数据。
在此,我们使用 IN 运算符在 SELECT 语句中指定多个值。
Example
在此示例中,我们使用 IN 运算符在 SELECT 语句中指定多个值,考虑了 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);
该表将按如下方式创建:
ID |
NAME |
AGE |
ADDRESS |
SALARY |
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 |
假设基于上述表,我们想要显示 NAME 等于“Khilan”、“Hardik”和“Muffy”(字符串值)的记录。这可以使用 IN 运算符实现,如下所示 −
SELECT * FROM CUSTOMERS
WHERE NAME IN ('Khilan', 'Hardik', 'Muffy');
Output
获得的结果如下 −
ID |
NAME |
AGE |
ADDRESS |
SALARY |
2 |
Khilan |
25 |
Delhi |
1500.00 |
5 |
Hardik |
27 |
Bhopal |
8500.00 |
7 |
Muffy |
24 |
Indore |
10000.00 |
IN Operator with UPDATE Statement
我们还可以在 UPDATE 语句中使用 SQL IN 运算符来更新与 WHERE 子句中任何指定值匹配的行。UPDATE 语句用于修改数据库表中的现有数据。
Example
在此,我们使用 IN 运算符在 UPDATE 语句中指定多个值并更新之前创建的 CUSTOMERS 表。在此,我们更改年龄为“25”或“27”的客户的记录,并将年龄值更新为“30” −
UPDATE CUSTOMERS SET AGE = 30 WHERE AGE IN (25, 27);
Output
我们得到以下结果。我们可以观察到 3 位客户的年龄已修改 −
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3 Changed: 3 Warnings: 0
Verification
我们可以使用 SELECT 语句检索表的內容,以此验证该更改是否反映在表中。下面是在 CUSTOMERS 表中显示记录的查询 −
SELECT * FROM CUSTOMERS;
该表显示如下:
ID |
NAME |
AGE |
ADDRESS |
SALARY |
1 |
Ramesh |
32 |
Ahmedabad |
2000.00 |
2 |
Khilan |
30 |
Delhi |
1500.00 |
3 |
Kaushik |
23 |
Kota |
2000.00 |
4 |
Chaitali |
30 |
Mumbai |
6500.00 |
5 |
Hardik |
30 |
Bhopal |
8500.00 |
6 |
Komal |
22 |
Hyderabad |
4500.00 |
7 |
Muffy |
24 |
Indore |
10000.00 |
正如我们在上表中看到的,“Khilan”、“Chaitali”和“Hardik”的 AGE 已更新为“30”。
IN Operator with NOT
要否定一个条件,我们使用 NOT 运算符。SQL IN 运算符可以与 NOT 运算符结合使用,以在 WHERE 子句中排除特定值。换句话说,将检查特定表达式中是否缺少列表。
Subquery with IN Operator
我们可以使用 IN 运算符的子查询来返回单列中的记录。这意味着 SELECT 列列表中的多列不能包含在子查询中。
Syntax
IN 运算符指定子查询的基本语法如下:
WHERE column_name IN (subquery);
其中,
-
Subquery - 这条 SELECT 语句有一个要针对表达式进行测试的结果集。如果其中任何值与表达式匹配,IN 条件就会计算为 true。