MINUS 使用

1. sql minus运算符简介

除了unionunion allintersect运算符之外,sql还为我们提供了minus运算符,用于从另一个结果集中减去一个结果集。

以下是minus运算符的语法。

select
    id
from
    a 
minus 
select
    id
from
    b;

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

下图是minus运算符的说明。

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

我们经常在etl中使用minus运算符。 etl是数据仓库系统中的软件组件。 etl代表extract,transform和load。 etl负责将数据从源系统加载到数据仓库系统。

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

2. sql minus示例

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

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

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

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

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

select 
    employee_id
from
    employees 
minus 
select 
    employee_id
from
    dependents;

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

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;

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

  • 6
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值