1613. 找到遗失的ID

问题:
写一个 SQL 语句, 找到所有遗失的顾客id. 遗失的顾客id是指那些不在 Customers 表中, 值却处于 1 和表中最大 customer_id 之间的id.

表: Customers

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| customer_id   | int     |
| customer_name | varchar |
+---------------+---------+

customer_id 是该表主键.
该表第一行包含了顾客的名字和id.

注意: 最大的 customer_id 值不会超过 100.

返回结果按 ids 升序排列

查询结果格式如下例所示。

示例 1:

输入:

Customers
 表:
+-------------+---------------+
| customer_id | customer_name |
+-------------+---------------+
| 1           | Alice         |
| 4           | Bob           |
| 5           | Charlie       |
+-------------+---------------+
输出:
+-----+
| 
ids 
|
+-----+
| 2   |
| 3   |
+-----+

解释:
表中最大的customer_id是5, 所以在范围[1,5]内, ID2和3从表中遗失.

drop table if EXISTS Customers;
Create table If Not Exists Customers (customer_id int, customer_name varchar(255));

insert into Customers values (1,'Alice');
insert into Customers values (4,'Bob');
insert into Customers values (5,'Charlie');
select * from Customers;
with recursive t as
                   (select 1 as i
                    union all
                    select i+1 from t where i<100
                   )
-- select * from t;
select i as ids
from t
where i<=(select max(customer_id) from customers)
  and i not in (select customer_id from customers)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值