SQL Minus运算符

在本教程中,您将学习如何使用SQL MINUS运算符从另一个结果集中减去一个结果集。

1. SQL MINUS运算符简介

除了UNION,UNION ALL和INTERSECT运算符之外,SQL还为我们提供了MINUS运算符,用于从另一个结果集中减去一个结果集。

以下是MINUS运算符的语法。

SELECT
    id
FROM
    A 
MINUS 
SELECT
    id
FROM
    B;

要使用MINUS运算符,可以编写单独的SELECT语句并将MINUS运算符放在它们之间。 MINUS运算符返回第一个查询生成的唯一行,但不返回第二个查询生成的唯一行。

下图是MINUS运算符的说明。

《SQL Minus运算符》

为了获得结果集,数据库系统执行两个查询并从第二个查询中减去第一个查询的结果集。
要使用MINUS运算符,SELECT子句中的列必须匹配,并且必须具有相同或至少可转换的数据类型。

我们经常在ETL中使用MINUS运算符。 ETL是数据仓库系统中的软件组件。 ETL代表Extract,Transform和Load。 ETL负责将数据从源系统加载到数据仓库系统。

完成加载数据后,可以使用MINUS运算符通过从源系统中的数据中减去目标系统中的数据来确保数据已完全加载。

2. SQL MINUS示例

请考虑示例数据库中的 employeesdependents 表,它们的关系如下所示:

《SQL Minus运算符》

每个员工都有零个或多个家属,而每个员工依赖于一个且只有一个员工。 家属与员工之间的关系是一对多的关系。

dependents表中的employee_id列引用employees表中的employee_id列。

可以使用MINUS运算符查找没有任何家属的员工。 要执行此操作,请从dependents表中的employee_id结果集中减去employees表中的employee_id结果集。

以下查询实现了这个想法:

SELECT 
    employee_id
FROM
    employees 
MINUS 
SELECT 
    employee_id
FROM
    dependents;

执行上面查询语句,得到以下结果:

《SQL Minus运算符》

2.1. SQL MINUS使用ORDER BY示例

要对MINUS运算符返回的结果集进行排序,请将ORDER BY子句放在最后一个SELECT语句的末尾。

例如,要对没有任何家属的员工进行排序,请使用以下查询:

SELECT 
    employee_id
FROM
    employees 
MINUS 
SELECT 
    employee_id
FROM
    dependents
ORDER BY employee_id;

执行上面查询语句,得到以下结果:
《SQL Minus运算符》

通过本文的学习,现在您应该对SQL MINUS运算符有一个很好的理解,并知道如何应用它来比较两个结果集。

        原文作者:SQL教程
        原文地址: https://www.yiibai.com/sql/sql-minus.html
        本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
    点赞