SQL Select 多列中的NOT IN查询

SQL Select 多列中的NOT IN查询

在本文中,我们将介绍如何使用SQL的SELECT语句来执行多列中的NOT IN查询。NOT IN是一种常用的SQL操作符,用于从一个列中排除包含在另一个列中的特定值。

阅读更多:SQL 教程

什么是NOT IN查询?

NOT IN查询是SQL中的一种条件语句,用于在一个列中排除包含在另一个列中的特定值。它可以用于对多列中的值进行排除。

如何使用NOT IN进行多列查询?

在进行多列的NOT IN查询时,我们需要将多个列的值组合在一起,并使用括号将它们括起来。下面是一个示例:

SELECT column1, column2, column3
FROM table
WHERE (column1, column2) NOT IN (
  SELECT column1, column2
  FROM another_table
)

在上面的示例中,我们从一个表(table)中选取column1、column2和column3列的值,然后使用NOT IN子查询来排除另一个表(another_table)中column1和column2列的值。

示例说明

假设我们有两个表,一个是商品表(products),另一个是订单表(orders)。我们想要选取未被订单表中的商品列(product_id,color)包含的商品。

首先,我们可以查看商品表的结构,如下所示:

CREATE TABLE products (
  product_id INT,
  product_name VARCHAR(50),
  color VARCHAR(20)
);

接下来,我们可以查看订单表的结构,如下所示:

CREATE TABLE orders (
  order_id INT,
  product_id INT,
  color VARCHAR(20)
);

现在,我们可以向商品表中插入一些数据:

INSERT INTO products (product_id, product_name, color)
VALUES (1, 'iPhone 12', 'Black'),
       (2, 'Samsung Galaxy S21', 'White'),
       (3, 'Google Pixel 5', 'Black'),
       (4, 'OnePlus 9', 'Blue');

然后,我们向订单表中插入一些数据:

INSERT INTO orders (order_id, product_id, color)
VALUES (1, 1, 'Black'),
       (2, 2, 'White'),
       (3, 3, 'Black');

现在,我们可以使用以下示例查询来查找未被订单表中的商品列(product_id,color)包含的商品:

SELECT product_id, color
FROM products
WHERE (product_id, color) NOT IN (
  SELECT product_id, color
  FROM orders
);

查询的结果将是以下内容:

+-----------+-------+
| product_id| color |
+-----------+-------+
|    4      | Blue  |
+-----------+-------+

从以上结果中,我们可以看到商品表中的产品(OnePlus 9)没有在订单表中,所以它被返回了。

总结

在本文中,我们介绍了如何使用SQL的SELECT语句对多列进行NOT IN查询。通过在括号内将多个列的值组合在一起,我们可以排除包含在另一个列中的特定值。使用多列的NOT IN查询可帮助我们从一个列中排除多个匹配项,以满足特定的查询需求。希望本文对于你理解并使用SQL中的多列NOT IN查询有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程