📜  MySQL减号

📅  最后修改于: 2020-11-19 04:35:58             🧑  作者: Mango

MySQL减号

MINUS运算符是SQL中的一种SET运算,还包括INTERSECT,UNION和UNION ALL。 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;

输出:

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