MySQL 减

总结:在本教程中,您将学习如何使用 SQL MINUS 运算符以及如何 MINUS 在 MySQL 中使用 join进行模拟。

请注意,MySQL 不支持该 MINUS 运算符。本教程向您展示如何 MINUS 使用连接子句模拟MySQL 中的运算符。

SQL MINUS 运算符介绍

的 MINUS 操作者是在包括SQL标准的三个运算符之一 UNION , INTERSECT 和 MINUS 。

的 MINUS 两个查询的结果进行比较,并从结果集中未出现在结果集中的第二查询的所述第一查询返回的不同的行。

下面说明了 MINUS 运算符的语法:

SELECT select_list1 
FROM table_name1
MINUS 
SELECT select_list2 
FROM table_name2;

使用 MINUS 运算符的查询的基本规则如下:

  • 数量和两列的顺序 select_list1 和 select_list2 必须相同。
  • 两个查询中对应列的数据类型必须兼容。

假设我们有两个表 t1 , t2 具有以下结构和数据:

CREATE TABLE t1 (
    id INT PRIMARY KEY
);

CREATE TABLE t2 (
    id INT PRIMARY KEY
);

INSERT INTO t1 VALUES (1),(2),(3);
INSERT INTO t2 VALUES (2),(3),(4);

以下查询从 t1 表的查询返回不同的值,该值在表的查询结果中未找到 t2 。

SELECT id FROM t1
MINUS
SELECT id FROM t2;

MySQL 减去实例
MySQL 减去实例

以下维恩图说明了该 MINUS 操作:

MySQL MINUS 运算符说明
MySQL MINUS 运算符说明

请注意,有些数据库系统,例如,Microsoft SQL Server和PostgreSQL的使用 EXCEPT 代替 MINUS 。它们具有相同的功能。

MySQL MINUS 操作符模拟

不幸的是,MySQL 不支持 MINUS 运算符。但是,您可以使用join来模拟它。

要模拟 MINUS 两个查询,请使用以下语法:

SELECT 
    select_list
FROM 
    table1
LEFT JOIN table2 
    ON join_predicate
WHERE 
    table2.column_name IS NULL;

例如,以下查询使用 LEFT JOIN 子句返回与 MINUS 运算符相同的结果:

SELECT 
    id
FROM
    t1
LEFT JOIN
    t2 USING (id)
WHERE
    t2.id IS NULL;

在本教程中,您学习了 SQL MINUS 运算符以及如何在 MySQL 中使用 LEFT JOIN 子句模拟 MINUS 运算符。