gpt4 book ai didi

mysql - SQL - 找到最小的未使用数字

转载 作者:可可西里 更新时间:2023-11-01 07:34:17 27 4
gpt4 key购买 nike

我在 2 个不同的表中有一个“数字”列。这不是 ID。

我创建了一个这样的联合:

SELECT number FROM table1 UNION SELECT number FROM table ORDER BY number ASC

结果如下:

number
=====
1
2
3
5
6
8

如何找到最低的未使用号码?在这种情况下,它将是 4。一旦使用了 4,它将是 7,依此类推

最佳答案

这是一种方法:

select min(number + 1)
from t
where not exists (select 1 from t t2 where t2.number = t.number + 1);

对于两个不同的表,我会这样表述:

select min(x)
from ((select min(number + 1) as x
from t1 t
where not exists (select 1 from t1 tt1 where tt1.number = t.number + 1)
not exists (select 1 from t2 tt2 where tt2.number = t.number + 1)
) union all
(select min(number + 1) as x
from t2 t
where not exists (select 1 from t1 tt1 where tt1.number = t.number + 1)
not exists (select 1 from t2 tt2 where tt2.number = t.number + 1)
)
) t;

这看起来更复杂,但它可以在每个表中使用 (number) 上的索引(如果存在这样的索引)。

关于mysql - SQL - 找到最小的未使用数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39817300/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com