SQL NOT IN

2024 年 8 月 29 日 | 4 分钟阅读

本文将通过各种示例,清晰地演示 SQL NOT IN 运算符。在开始示例之前,让我们先了解一下 SQL NOT IN 运算符及其 SQL 语法。

什么是 SQL NOT IN?

SQL NOT IN 运算符用于根据预定义的值集排除 SQL 查询中的行。它经常在 SELECT 语句的 WHERE 子句中使用。NOT IN 运算符的一般语法如下:

如果未满足 IN 运算符指定的值,则使用 NOT IN SQL 查询或 NOT IN 运算符过滤结果。这意味着 NOT IN SQL 查询将值与提供的表达式或列名进行比较。如果找到匹配项,SELECT 语句将不会在 SQL 查询结果中包含该特定记录。

SQL 中的 NOT IN 运算符与 IN 运算符完全相反。此外,SQL 中存在逻辑运算符 NOT,可用于选择条件语句为 false 的行。类似地,当 WHERE 子句和 NOT IN 运算符结合使用时,WHERE 子句中指定的值不会包含在 NOT IN SQL 查询的输出中。

请参见下面的示例,以清楚地了解 SQL NOT IN 运算符的工作原理以及它与 WHERE 等各种条件子句结合使用时的用法。

示例 1

为了应用 NOT IN 运算符,我们首先创建一个名为 Player_info 的表,其中包含球员的基本信息,并向其中插入值。

现在,我们将使用 INSERT INTO 语句向此表中插入值。

表将如下所示:


ID名字姓氏出生年份出生地国家
1MSDhoni1981兰契印度
2FAFDuplessis1979CapeTownSouthAfrica
3RuturajGaikwad1994孟买印度
4ViratKohli1990德里印度
5KarnSharma1987哈里亚纳邦印度
6RavindraJadeja1988Nagpur印度
7山姆Curran1998Manchester英格兰

现在,我们将应用 NOT IN 运算符,使用特定条件排除表中的一些记录。

此查询将排除出生地为 Manchester 的所有行。因此,最后一条记录将被排除,其余所有记录都将由 select 语句返回。

输出

ID名字姓氏出生年份出生地国家
1MSDhoni1981兰契印度
2FAFDuplessis1979CapeTownSouthAfrica
3RuturajGaikwad1994孟买印度
4ViratKohli1990德里印度
5KarnSharma1987哈里亚纳邦印度
6RavindraJadeja1988Nagpur印度

可以向 NOT IN 运算符传递多个值,以便排除更多记录。

请参见下面的查询:

输出

ID名字姓氏出生年份出生地国家
1MSDhoni1981兰契印度
3RuturajGaikwad1994孟买印度
4ViratKohli1990德里印度
5KarnSharma1987哈里亚纳邦印度
6RavindraJadeja1988Nagpur印度
3RuturajGaikwad1994孟买印度

示例 2

让我们来看另一个关于 NOT IN 运算符的示例。

考虑一个名为 product_desc 的表,其中包含产品的销售价格和购买价格。

现在,我们将向其中插入值。

因此,表将呈现以下形式:


Product_idProduct_name购买价格销售价格
1无线鼠标50006000
2笔记本电脑6000065000
3平板电脑4000050000
4发言者20002500
5耳机10001200
6SSD 硬盘75009000

在这里,我们将使用 NOT IN 运算符排除产品 Speaker 和 SSD_disk 的记录。

输出

Product_idProduct_name购买价格销售价格
1无线鼠标50006000
2笔记本电脑6000065000
3平板电脑4000050000
5耳机10001200

示例 3

考虑下面的员工表,其中包含如下显示的记录:

emp_idemp_name城市年龄salary
1Suresh海得拉巴3020000
2Shreya Singh勒克瑙2725000
3Kavitha Kulkarni德里3360000
4Raj Pawar阿姆利则3050000
5Jay Sharma班加罗尔2540000
6Sravan Kumar金奈3020000

在这里,我们将删除姓名分别为 Shreya Singh 和 Raj Pawar 的员工记录。

输出

emp_idemp_name城市年龄salary
1Suresh海得拉巴3020000
3Kavitha Kulkarni德里3360000
5Jay Sharma班加罗尔2540000
6Sravan Kumar金奈3020000

示例 4

考虑下面的 Subscription 表,使用 NOT IN 运算符排除一些记录。

客户名称订阅名称购买时间
克里希纳河03:13:20
Abrar基本功能02:23:39
Ali期权费05:45:30
Mahesh基本功能06:30:32
Hafeez11:25:35
Joseph期权费10:32:50
Ramya期权费11:42:53

让我们排除 Subscription_name 列中包含“Premium”值的所有记录。

输出

客户名称订阅名称购买时间
克里希纳河03:13:20
Abrar基本功能02:23:39
Mahesh基本功能06:30:32
Hafeez11:25:35

下一主题行号 SQL