MySQL语法解析不等于运算符实现多条件查询(mysql不等于多个条件)

MySQL语法解析:不等于运算符实现多条件查询

在MySQL中,不等于运算符(!= 或 )常常用于查询不符合某种要求的数据。但是,如果需要查询多个条件都不满足的数据,该如何使用不等于运算符呢?本文将为大家介绍如何使用不等于运算符实现多条件查询。

示例数据:

考虑以下示例数据表 t_students :

| id | name | sex | age | height |

|—-|——-|——|—–|——–|

| 1 | Alice | 女 | 18 | 165 |

| 2 | Bob | 男 | 20 | 175 |

| 3 | Cindy | 女 | 19 | 160 |

| 4 | David | 男 | 22 | 180 |

| 5 | Eric | 男 | 21 | 170 |

要求查询年龄不是 18、19、20、21、22 中的任何一个的学生姓名和性别。

首先看到这个要求,我们可以想到使用不等于运算符来实现。但如果只使用一个不等于运算符,只能查询出一种不满足条件的情况。那么,如何同时实现多条件查询呢?

实现方式:

1. 使用 NOT IN

NOT IN 表示不在某个列表中,在MySQL中可以使用该关键字和子查询来实现多条件查询。如下所示:

SELECT name, sex

FROM t_students

WHERE age NOT IN (18,19,20,21,22);

运行结果如下:

| name | sex |

|——-|——|

| Cindy | 女 |

2. 使用 NOT EXISTS

NOT EXISTS 表示不存在满足条件的记录。使用该关键字和子查询,我们可以查询不满足多个条件的学生数据。如下所示:

SELECT name, sex

FROM t_students t1

WHERE NOT EXISTS (

SELECT 1

FROM t_students t2

WHERE t1.id = t2.id

AND t2.age IN (18,19,20,21,22)

);

运行结果如下:

| name | sex |

|——-|——|

| Cindy | 女 |

通过以上示例,我们可以看到,使用不等于运算符和子查询可以实现查询多个条件不满足的数据。同时,NOT IN 和 NOT EXISTS 操作符各自有不同的特点,具体应该怎样选择,取决于具体的业务需求。

附:代码

建表:

CREATE TABLE `t_students` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(20) NOT NULL,

`sex` varchar(10) NOT NULL,

`age` int(11) NOT NULL,

`height` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入数据:

INSERT INTO `t_students` (`id`, `name`, `sex`, `age`, `height`) VALUES

(1, ‘Alice’, ‘女’, 18, 165),

(2, ‘Bob’, ‘男’, 20, 175),

(3, ‘Cindy’, ‘女’, 19, 160),

(4, ‘David’, ‘男’, 22, 180),

(5, ‘Eric’, ‘男’, 21, 170);

完整代码:

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;

DROP TABLE IF EXISTS `t_students`;

CREATE TABLE `t_students` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(20) NOT NULL,

`sex` varchar(10) NOT NULL,

`age` int(11) NOT NULL,

`height` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `t_students` (`id`, `name`, `sex`, `age`, `height`) VALUES

(1, ‘Alice’, ‘女’, 18, 165),

(2, ‘Bob’, ‘男’, 20, 175),

(3, ‘Cindy’, ‘女’, 19, 160),

(4, ‘David’, ‘男’, 22, 180),

(5, ‘Eric’, ‘男’, 21, 170);

— NOT IN

SELECT name, sex

FROM t_students

WHERE age NOT IN (18,19,20,21,22);

— NOT EXISTS

SELECT name, sex

FROM t_students t1

WHERE NOT EXISTS (

SELECT 1

FROM t_students t2

WHERE t1.id = t2.id

AND t2.age IN (18,19,20,21,22)

);

SET FOREIGN_KEY_CHECKS = 1;

总结:

本文介绍了如何使用 MySQL 不等于运算符实现多条件查询,并提供了两种实现方式:NOT IN 和 NOT EXISTS。需要特别注意的是,MySQL 中的不等于运算符有两种:!= 和 ,可以根据自己的习惯和需求选择使用。在实际应用中,可以根据具体的业务需求选择合适的方式完成多条件查询。


数据运维技术 » MySQL语法解析不等于运算符实现多条件查询(mysql不等于多个条件)