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查询有所帮助。
极客教程