SQL(select)集合运算

博客探讨了SQL中的集合运算,包括交集、并集和差运算,并详细解释了`UNION`、`UNION ALL`、`INTERSECT`和`MINUS`等运算符的使用。同时,文章还讨论了排名分页问题,提到了`ROWNUM`伪列在Oracle中的作用和执行过程,以及如何利用`ROWNUM`进行分页查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合运算

  • 若将两张表看出集合,匹配问题就是集合运算中的交集
  • 若将两张表看出集合,不匹配问题就是集合运算中的差
  • 匹配问题+不匹配问题就是集合运算中的并集

集合运算符

  • union/union all
  • intersect 交集
  • minus 差
  • 集合运算要求两个select语句是同构的,即列的个数和数据类型必须一致
  • union的结果集为两个查询结果的并集,是去掉重复值的
  • union all的结果集为两个查询结果的并集,是包含重复值的
  • intersect的结果集为两个查询结果的交集,不包含重复值
  • minus的结果集为属于第一个查询的结果集,但不属于第二个查询的结果集即从第一个查询的结果集中减去他们的交集,不包含重复值
select a.REAL_NAME ,b.REAL_NAME
from ACCOUNT a join ACCOUNT b
on a.id=b.RECOMMENDER_ID
union all
select REAL_NAME ,'no recommender'
from  ACCOUNT where RECOMMENDER_ID is null

排名分页问题

rownum

  • rownum是一个伪列,对查询返回的行编号即行号,有1开始递增
  • 关键点:oracle的rownum数值是在获取每行之后才赋予的
select rownum ,REAL_NAME from ACCOUNT

where rownum<=5的执行过程

  • oracle获取第一个符合条件的行,将它叫做第一行
  • 有5行行了吗?如果没有,oracle就再返回行,因为他要满足行号小于等于5的条件,如果到了5行,那么,oracle就不再返回行
  • oracle获取下一行,并递增行号(从2,到3,再到4,等等)
  • 返回第二步
select rownum ,REAL_NAME from ACCOUNT
where ROWNUM in (1,2,3,5)

rownum只会显示123行,没4就接不上5

select rownum ,REAL_NAME from ACCOUNT
where ROWNUM  <=6
minus
select rownum ,REAL_NAME from ACCOUNT
where ROWNUM  <=3;
select rn,REAL_NAME
from (select ROWNUM rn,REAL_NAME from  ACCOUNT where ROWNUM <=6)
where rn between 4 and 6;
select ROWNUM ,REAL_NAME ,CREATE_DATE
from (select REAL_NAME,CREATE_DATE from ACCOUNT order by CREATE_DATE desc)
where rownum <=6
minus
select ROWNUM ,REAL_NAME ,CREATE_DATE
from (select REAL_NAME,CREATE_DATE from ACCOUNT order by CREATE_DATE desc)
where rownum <=3
select rn,REAL_NAME,CREATE_DATE
from (select rownum rn ,REAL_NAME,CREATE_DATE
    from (
         select REAL_NAME,CREATE_DATE from  ACCOUNT order by  CREATE_DATE
             )where rownum<=6)where rn between 4 and 6;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值