首页 > 解决方案 > 如何使用 SQL 列出缺失的数值

问题描述

我正在尝试找出我正在开发的 API 的 SQL 请求。

所以我们有这个“桨”表,用户在其中注册,api 必须为桨提供一个可能的数字(只是一个函数 ID)。考虑到用户可以指定自己的桨号,我需要创建一个请求来获取每个缺失值。

我已经有一个 sql 请求:

select MIN(p.number)+1 FROM Paddle p WHERE not exists(
SELECT pa.number
FROM Paddle pa
WHERE pa.channel = 'ABSENTEE'
      AND pa.sale_id = 3
      AND p.number + 1 = pa.number) AND p.channel = 'ABSENTEE' AND p.sale_id = 3);

但它无法检测到何时没有桨号 1。

channel 和 sale_id 用于限制数字(我可以有两个桨,1 为数字,但不能用于相同的销售和渠道)

所以我想在请求中添加一部分,如果没有第一号桨,则将数字添加到子请求的结果集中。

感谢您的回复!

标签: sql

解决方案


我会尝试这样的事情:

select pid from
(
    select 1 as pid
    union all
    select p.number+1 from Paddle
) as q
where
pid not in (select p.number from Paddle)

所以,在子查询中q,我得到所有可能为空的 ID,然后过滤掉使用过的 ID


推荐阅读