有趣的sql语句之-找出id缺少的最小和最大值

--建表
create table table_a (
aid number(10),
aname varchar2(20),
asex char(1)
);
--插入数据
insert into table_a values (1, 'jack' ,'1');
insert into table_a values (2, 'ruc' ,'1');
insert into table_a values (3, 'lucas' ,'0');
insert into table_a values (5, 'jet' ,'0');
insert into table_a values (6, 'ray' ,'0');
insert into table_a values (7, 'bill' ,'1');
insert into table_a values (9, 'mary' ,'0');


表结构:

aid  aname asex
1 jack 1
2 ruc 1
3 lucas 0
5 jet 0
6 ray 0
7 bill 1
9 mary 0
找出表中aid缺少的最小和最大值
即答案是4,8;
这个是在某群中有人提出的问题,这里有一个陷阱,就是例子中的aid只缺了单个值,如果aid为5的记录被删除后,要保证答案依旧是4,8

我有参考论坛中某个帖子(忘记叫什么了,大概是说腾讯的sql面试题)

select min(t1.x), max(t1.x)
from (SELECT rownum x
FROM DUAL
connect by rownum < (select max(aa.aid) from table_a aa)) t1
where not exists (select 1 from table_a a where a.aid = t1.x);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值