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;  

执行上述查询后,我们应该得到如下图所示的输出:

热门文章

优秀文章