MySQL NOT IN 多列

MySQL NOT IN 多列

MySQL NOT IN 多列

在MySQL中,使用NOT IN运算符可以在WHERE子句中排除指定列中的值。通常,NOT IN运算符用于过滤结果集,以便只返回不匹配指定列值的行。本篇文章将详细介绍MySQL中的NOT IN运算符,并提供一些示例代码和运行结果。

1. 概述

NOT IN是MySQL中的一个运算符,用于排除一个列表中的所有值。它的基本语法如下:

SELECT column_name(s)
FROM table_name
WHERE column_name NOT IN (value1,value2,...);

其中,column_name是要排除的列名,table_name是要查询的表名,value1,value2,...是要排除的值。使用NOT IN时,通过在WHERE子句中指定列名和值的列表,来排除具有相应列值的行。

需要注意的是,NOT IN运算符只用于排除一个列中的值,无法同时排除多个列的值。但是,可以使用多个NOT IN运算符来排除多个列的值,后面的示例将详细介绍如何实现这一点。

2. 示例代码

为了更好地理解NOT IN运算符的用法,下面将给出一些示例代码。首先,创建一个名为users的表,用于存储用户信息:

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT,
  country VARCHAR(50),
  city VARCHAR(50)
);

INSERT INTO users (id, name, age, country, city)
VALUES (1, 'Alice', 25, 'China', 'Beijing'),
       (2, 'Bob', 30, 'USA', 'New York'),
       (3, 'Charlie', 20, 'UK', 'London'),
       (4, 'David', 22, 'China', 'Shanghai'),
       (5, 'Emma', 28, 'USA', 'Los Angeles');

现在我们假设要查询年龄不在25和30之间的用户。可以使用NOT IN运算符来实现:

SELECT * FROM users WHERE age NOT IN (25, 30);

运行上述查询语句,将得到以下结果:

id name age country city
3 Charlie 20 UK London
4 David 22 China Shanghai
5 Emma 28 USA Los Angeles

上述结果中的行代表满足条件的用户,即年龄不在25和30之间的用户。

接下来,我们想要查询不来自中国或美国的用户。这可以通过在WHERE子句中多次使用NOT IN运算符来实现:

SELECT * FROM users WHERE country NOT IN ('China', 'USA');

运行上述查询语句,将得到以下结果:

id name age country city
3 Charlie 20 UK London

上述结果中的行代表满足条件的用户,即不来自中国或美国的用户。

3. 运行结果

下面是上述示例代码中的查询语句的运行结果。

3.1. 查询年龄不在25和30之间的用户

SELECT * FROM users WHERE age NOT IN (25, 30);
id name age country city
3 Charlie 20 UK London
4 David 22 China Shanghai
5 Emma 28 USA Los Angeles

3.2. 查询不来自中国或美国的用户

SELECT * FROM users WHERE country NOT IN ('China', 'USA');
id name age country city
3 Charlie 20 UK London

4. 总结

本文详细介绍了MySQL中的NOT IN运算符,该运算符用于排除指定列中的值。通过在WHERE子句中使用NOT IN运算符和相应的列名和值列表,可以过滤结果集中具有相应列值的行。本文还提供了示例代码和运行结果,以便读者更好地理解NOT IN运算符的用法。

需要注意的是,NOT IN只能用于排除一个列中的值,并不能同时排除多个列的值。但是,可以多次使用NOT IN运算符来实现排除多个列的值。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程