SQL IN和NOT IN操作符完全指南:语法、用法与实例
这是文章《SQL IN – SQL NOT IN》的第1部分(共1部分)。
内容片段: SQL IN运算符与WHERE子句一起使用,以在WHERE子句中提供多个值作为条件。
1. SQL中的IN操作
SQL中的IN运算符几乎相当于为同一列拥有多个OR运算符。让我们详细讨论一下SQL中的IN运算符。有两种定义IN运算符的方法,我们将在下面详细讨论这两种方法。
1.1) IN中的多个值
语法:
SELECT 列名 FROM 表名 WHERE 列名 IN (值1, 值2, ... 值N);
使用上述语法,我们可以将多个值定义为IN操作符的一部分。通过一些示例,我们将更详细地了解上述语法。让我们以下面的学生表为例进行说明。
学号 | 学生姓名 | 学生性别 | 学生年龄 | 学生百分比 |
---|---|---|---|---|
1 | 乔治 | 男 | 14 | 85 |
2 | 莫妮卡 | 女 | 12 | 88 |
3 | 杰西卡 | 女 | 13 | 84 |
4 | 汤姆 | 男 | 11 | 78 |
场景:获取年龄为12或13岁的学生所占的百分比。查询:
SELECT 学生百分比 FROM 学生表 WHERE 学生年龄 IN ('12', '13');
输出:
学生百分比 |
---|
88 |
84 |
1.2) 选择查询作为IN的一部分
语法:语法的规则和结构。
SELECT 列名 FROM 表名 WHERE 列名 IN (SELECT 语句);
通过上述语法,我们可以使用SQL SELECT语句作为IN运算符的一部分提供值。通过一些示例,我们将更详细地了解上述语法。让我们以产品和供应商表为例进行说明。产品表
产品ID | 产品名称 | 产品价格 |
---|---|---|
1 | 饼干 | 10 |
2 | 奶酪 | 11 |
3 | 巧克力 | 15 |
4 | 果酱 | 20 |
供应商表
产品ID | 产品名称 | 供应商名称 |
---|---|---|
1 | 饼干 | ABC |
2 | 奶酪 | XYZ |
3 | 巧克力 | ABC |
4 | 果酱 | XDE |
情景: 获取ABC供应商的产品价格。查询:
SELECT 产品价格 FROM 产品表 WHERE 产品名称 IN
(SELECT 产品名称 FROM 供应商表 WHERE 供应商名称 = "ABC");
结果:
产品价格 |
---|
10 |
15 |
1.3) SQL嵌套IN
我们还可以在其他IN操作符中使用IN。为了更好地理解,让我们考虑以下场景。场景:获取供应商为ABC和XDE的产品价格。查询:
SELECT 产品价格 FROM 产品表 WHERE 产品名称 IN
(SELECT 产品名称 FROM 供应商表 WHERE 供应商名称 IN ( "ABC", "XDE" ));
输出
产品价格 |
---|
10 |
15 |
20 |
2. SQL NOT IN
SQL的NOT IN运算符用于筛选结果,如果IN运算符中提及的值不满足条件。让我们详细讨论SQL的NOT IN运算符。语法:
SELECT 列名 FROM 表名 WHERE 列名 NOT IN (值1, 值2... 值N);
在上述语法中,作为IN子句的一部分而不满足的数值将被考虑为结果。让我们以之前定义的学生表为例进行说明。场景:获取年龄不是12或13的学生的百分比。查询。
SELECT 学生百分比 FROM 学生表 WHERE 学生年龄 NOT IN ('12', '13');
输出:
学生百分比 |
---|
85 |
78 |
2.1) 使用子查询的NOT IN
语法:语法结构与短语或单词的组合方法。
SELECT 列名 FROM 表名 WHERE 列名 NOT IN (SELECT 语句);
使用上述语法,我们可以使用SELECT语句作为NOT IN运算符的一部分来提供值。通过一些示例,我们将更详细地了解上述语法。让我们考虑之前定义的产品和供应商表,以便举例说明。场景:获取供应商不是ABC的产品价格。查询:
SELECT 产品价格 FROM 产品表 WHERE 产品名称 NOT IN
(SELECT 产品名称 FROM 供应商表 WHERE 供应商名称 = "ABC");
以上就是SQL中IN和NOT IN操作符的示例。