MySQL MINUS运算
MINUS 运算符是 SQL 中的一种 SET 操作,还包括 INTERSECT、UNION 和 UNION ALL。MINUS 运算符返回第一个表/集合中的唯一元素,该元素在第二个表/集合中找不到。换句话说,它将比较两个查询的结果,并从第一个查询获得的结果集中生成结果行,而在第二个查询获得的结果集中找不到结果行。
一、MySQL MINUS运算 语法
以下是说明使用 MINUS 运算符的语法:
SELECT column_lists FROM table_name WHERE (condition)
MINUS
SELECT column_lists FROM table_name WHERE (condition);
注意:MySQL 不提供对 MINUS 运算符的支持。本文向您展示如何使用 JOIN 子句在 MySQL 中模拟 MINUS 查询。
以下是使用 MINUS 运算符的语句的规则:
- 所有 SELECT 语句中的列数和顺序必须相同。
- 两个 SELECT 语句中对应列的数据类型必须相同或可转换。
我们可以通过以下图片表示来理解 MINUS 运算符。在这里,此运算符从第一个SELECT 语句获得的结果中返回不同/唯一的值并且在第二个 SELECT 语句获得的结果中找不到:
二、MySQL MINUS运算 示例
由于MySQL不提供对 MINUS 运算符的支持。但是,我们可以使用LEFT JOIN子句来模拟这个运算过程。
我们可以使用以下语法来模拟 MINUS 运算符:
SELECT column_list FROM table1
LEFT JOIN table2 ON condition
WHERE table2.column_name IS NULL;
示例
让我们首先创建两个具有以下结构的表来进行演示:
表1:
mysql> CREATE TABLE tab1 (
Id INT PRIMARY KEY
);
mysql> INSERT INTO tab1 VALUES (1), (2), (3), (4);
表2:
mysql> CREATE TABLE tab2 (
id INT PRIMARY KEY
);
mysql> INSERT INTO tab2 VALUES (3), (4), (5), (6);
现在,我们将在 LEFT JOIN 子句的帮助下执行以下查询。它给出与 MINUS 运算符相同的结果:
mysql> SELECT Id FROM tab1
LEFT JOIN tab2 USING (Id)
WHERE tab2.Id IS NULL;
执行上述查询后,我们应该得到如下图所示的输出:
热门文章
优秀文章