gpt4 book ai didi

mysql - 获取 MySQL 列中的最小未使用值

转载 作者:可可西里 更新时间:2023-11-01 07:12:30 25 4
gpt4 key购买 nike

我有一个包含整数 ID 列的表。我想获得此列的最小未使用值。查询应该找到表 ID 中的第一个洞并获取其中的最小值。我将尝试用一些例子来解释它。

例一:无孔表

在这种情况下,我有一个没有漏洞的表,查询应该简单地获取最小未使用值:应该获取:4

|id|
|1 |
|2 |
|3 |

示例 2:顶部有孔的 table

在这种情况下,我们在顶部有一个洞(缺失值:1)。查询找到洞并得到里面的最小值:应该得到1。

|id|
|2 |
|3 |
|4 |

同样在这种情况下,我们在顶部有一个洞,但里面有更多缺失值(缺失值:1 和 2)。查询找到洞并得到里面的最小值:应该得到1。

|id|
|3 |
|4 |
|5 |

示例3:中间有孔的 table

在这种情况下,中间有一个洞(缺失值:2 和 3)。查询找到洞并得到里面的最小值:应该得到2。

|id|
|1 |
|4 |
|5 |

示例 4:顶部和中间有孔的 table

在这种情况下,我们有多个孔:一个在顶部(缺失值:1),一个在中间(缺失值:3)。查询找到第一个洞并获取其中的最小值:应该得到 1。

|id|
|2 |
|4 |
|6 |

我已经尝试了 this post 中提出的解决方案,但在我的案例中它没有按预期工作。有什么想法吗?

最佳答案

SELECT min(unused) AS unused
FROM (
SELECT MIN(t1.id)+1 as unused
FROM yourTable AS t1
WHERE NOT EXISTS (SELECT * FROM yourTable AS t2 WHERE t2.id = t1.id+1)
UNION
-- Special case for missing the first row
SELECT 1
FROM DUAL
WHERE NOT EXISTS (SELECT * FROM yourTable WHERE id = 1)
) AS subquery

关于mysql - 获取 MySQL 列中的最小未使用值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25719690/

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