AND 字段 NOT IN(NULL) 返回一个空集 [重复]

mysql

1个回答

写回答

不知道哦

2025-07-02 23:35

+ 关注

合同
合同

根据 AND 字段 NOT IN(NULL) 返回一个空集 [重复]

在数据库查询中,我们经常会使用条件语句来筛选出符合特定要求的数据。其中,使用AND操作符可以将多个条件组合同时满足所有条件的数据将被返回。而在某些情况下,我们希望排除某些特定的值,以获取除这些值之外的数据。这时,可以使用NOT IN语句来实现。

NOT IN语句用于排除某些特定值,它的语法结构如下:

SELECT 列名 FROM 表名 WHERE 列名 NOT IN (值1, 值2, ...);

其中,列名代表要筛选的列,表名代表要查询的表,值1、值2等代表要排除的特定值。如果查询结果中的某个列的值与这些特定值之一相等,则该行将被排除在结果集之外。

然而,当我们使用NOT IN语句时,有时会遇到一个问题,即返回一个空集。这意味着我们希望排除的特定值集合为空,或者我们的数据库中没有与这些特定值匹配的数据。在这种情况下,我们需要注意语法的正确性,并确保查询结果为空。

案例代码:

假设我们有一个名为"students"的表,其中包含了学生的姓名、年龄和性别等信息。我们希望查询出所有男性学生的姓名和年龄,但排除掉特定的年龄值(例如18岁和20岁),以获取除这些年龄之外的男性学生信息。

首先,我们创建一个示例表"students",并插入一些数据:

CREATE TABLE students (

id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(50),

age INT,

gender VARCHAR(10)

);

INSERT INTO students (name, age, gender) VALUES

('张三', 18, '男'),

('李四', 20, '男'),

('王五', 22, '男'),

('赵六', 18, '男'),

('钱七', 25, '男'),

('孙八', 20, '男'),

('周九', 21, '男'),

('吴十', 19, '男'),

('郑十一', 23, '男');

接下来,我们可以使用以下查询语句来实现我们的需求:

SELECT name, age

FROM students

WHERE gender = '男' AND age NOT IN (18, 20);

运行以上查询语句后,我们将得到下面的结果集:

+--------+-----+

| name | age |

+--------+-----+

| 王五 | 22 |

| 钱七 | 25 |

| 周九 | 21 |

| 吴十 | 19 |

| 郑十一 | 23 |

+--------+-----+

以上结果集中仅包含了除了18岁和20岁之外的男性学生的姓名和年龄信息,符合我们的查询要求。

:

通过使用AND操作符和NOT IN语句,我们可以在数据库查询中排除特定的值,以获得除了这些值之外的数据。然而,在使用NOT IN语句时,我们需要注意排除值的正确性,并确保查询结果为空。通过合理运用条件语句,我们可以更加灵活地进行数据筛选和查询。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号