- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表数据
- SQL - 约束
- SQL 查询
- SQL - INSERT 查询
- SQL - SELECT 查询
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - UPDATE 查询
- SQL - DELETE 查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布尔 (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - DELETE 连接
- SQL - UPDATE 连接
- SQL - 左连接 vs 右连接
- SQL - UNION vs JOIN
- SQL 密钥
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 组合键
- SQL - 候选键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 聚簇索引
- SQL - 非聚簇索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - MIN & MAX
- SQL - NULL 函数
- SQL - CHECK 约束
- SQL - DEFAULT 约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - IN 运算符
SQL IN 运算符
SQL 的IN 运算符用于在WHERE子句中指定多个值或子查询。它返回指定列与列表中的某个值匹配的所有行。值列表或子查询必须用括号括起来,例如 IN (select query) 或 IN (Value1, Value2, Value3, ...)。
在某些情况下,我们可能使用多个 OR 语句在 SELECT、DELETE、UPDATE 或 INSERT 语句中包含多个条件。或者,我们可以使用 IN 运算符代替多个 OR 语句。
IN 运算符可以与 SQL 中的任何数据类型一起使用。它用于根据指定的值过滤数据库表中的数据。
当您想要选择与特定值集中的一个值匹配的所有行时,IN 运算符非常有用。而当您想要选择满足多个条件中的任何一个条件的所有行时,OR 运算符非常有用。
语法
指定多个值的 SQL IN 运算符的基本语法如下:
WHERE column_name IN (value1, value2, value3, ...);
其中,
value1, value2, value3, ... 是要针对表达式测试的列表中的值。如果在列表中找到这些值中的任何一个,IN 运算符返回 TRUE;如果没有找到,则返回 FALSE。
带 SELECT 语句的 IN 运算符
我们可以使用 SQL IN 运算符在 WHERE 子句中指定多个值,也可以在 SELECT 语句中使用它来检索与指定值中的任何一个匹配的数据。
在这里,我们使用 IN 运算符在 SELECT 语句中指定多个值。
示例
在这个例子中,我们使用 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 | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | 25 | 2000.00 |
2 | Ahmedabad | 25 | 2000 | 1500.00 |
3 | Khilan | 23 | 25 | 2000.00 |
4 | Delhi | 25 | 1500 | 6500.00 |
5 | Kaushik | 27 | 30 | 8500.00 |
6 | Kota | 22 | 2000 | 4500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |
Mumbai
SELECT * FROM CUSTOMERS WHERE NAME IN ('Khilan', 'Hardik', 'Muffy');
6500
Hardik
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
2 | Ahmedabad | 25 | 2000 | 1500.00 |
5 | Kaushik | 27 | 30 | 8500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |
示例
27
SELECT * FROM CUSTOMERS WHERE NAME = 'Khilan' OR NAME = 'Hardik' OR NAME = 'Muffy';
6500
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
2 | Ahmedabad | 25 | 2000 | 1500.00 |
5 | Kaushik | 27 | 30 | 8500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |
带 UPDATE 语句的 IN 运算符
Bhopal
示例
8500
UPDATE CUSTOMERS SET AGE = 30 WHERE AGE IN (25, 27);
6500
Komal
Query OK, 3 rows affected (0.01 sec) Rows matched: 3 Changed: 3 Warnings: 0
22
Hyderabad
SELECT * FROM CUSTOMERS;
4500
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | 25 | 2000.00 |
2 | Ahmedabad | 30 | 2000 | 1500.00 |
3 | Khilan | 23 | 25 | 2000.00 |
4 | Delhi | 30 | 1500 | 6500.00 |
5 | Kaushik | 30 | 30 | 8500.00 |
6 | Kota | 22 | 2000 | 4500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |
Muffy
带 NOT 的 IN 运算符
23
语法
Indore
WHERE column_name NOT IN (value1, value2, ...);
示例
3000
SELECT * FROM CUSTOMERS WHERE AGE NOT IN (25, 23, 22);
6500
假设根据上表,我们想要显示姓名等于“Khilan”、“Hardik”和“Muffy”(字符串值)的记录。这可以使用IN运算符实现,如下所示:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | 25 | 2000.00 |
5 | Kaushik | 27 | 30 | 8500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |
带列名的 IN 运算符
输出
示例
获得的结果如下:
SELECT * FROM CUSTOMERS WHERE 2000 IN (SALARY);
6500
上面的查询也可以使用 OR 运算符完成。以下是一个例子:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | Ramesh | 32 | 25 | 2000.00 |
3 | Khilan | 23 | 25 | 2000.00 |
带 IN 运算符的子查询
我们还可以在 UPDATE 语句中使用SQL IN运算符来更新在 WHERE 子句中与指定值中的任何一个匹配的行。UPDATE 语句用于修改数据库表中现有数据。
语法
在这里,我们使用 IN 运算符在 UPDATE 语句中指定多个值,并更新前面创建的 CUSTOMERS 表。在这里,我们更改年龄为“25”或“27”的客户的记录,并将年龄值更新为“30”:
WHERE column_name IN (subquery);
其中,
我们得到以下结果。我们可以观察到 3 个客户的年龄已被修改:
示例
验证
SELECT * FROM CUSTOMERS WHERE NAME IN (SELECT NAME FROM CUSTOMERS WHERE SALARY > 2000);
6500
我们可以使用 SELECT 语句检索表的内容来验证更改是否已反映到表中。以下是显示 CUSTOMERS 表中记录的查询:
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
4 | Delhi | 25 | 1500 | 6500.00 |
5 | Kaushik | 27 | 30 | 8500.00 |
6 | Kota | 22 | 2000 | 4500.00 |
7 | Chaitali | 24 | 27 | 10000.00 |