gpt4 book ai didi

sql - 如何在表中获取第一个未使用的 ID?

转载 作者:可可西里 更新时间:2023-11-01 06:40:22 25 4
gpt4 key购买 nike

我必须编写一个查询,其中我需要为未使用/未生成/不存在于数据库中的特定记录分配一个ID(唯一键)。

简而言之,我需要为特定记录生成一个 id 并将其显示在打印屏幕上。

E.例如:

ID  Name1   abc2   def5   ghi

所以,问题是它应该返回 ID=3 作为下一个尚未生成的立即数,在生成 id 之后,我将将此数据存储回数据库表。

这不是硬件:我正在做一个项目,我有一个需求,我需要在哪里编写这个查询,所以我需要一些帮助来实现这个。

所以请指导我如何进行此查询,或如何实现此查询。

谢谢。

我无法添加评论,所以这就是我在这里写评论的原因..我正在使用 MySQL 作为数据库..

我的步骤是这样的:-

1) 从未使用的数据库表中检索 id..

2) 因为他们没有。用户(基于网站的项目),所以我不希望发生并发,所以如果为一个用户生成一个 ID,那么它应该锁定数据库,直到同一用户收到该 ID 并存储该 ID 的记录。之后,其他用户可以检索不存在的 ID。(主要要求)..

我怎样才能在 MySQL 中实现所有这些东西,另外我想 Quassnoi 的回答是值得的,但它在 MySQL 中不起作用..所以请解释一下查询,因为它对我来说是新的..并且会这个查询在 MySQL 中工作..

最佳答案

我将你的表命名为unused

SELECT  id
FROM (
SELECT 1 AS id
) q1
WHERE NOT EXISTS
(
SELECT 1
FROM unused
WHERE id = 1
)
UNION ALL
SELECT *
FROM (
SELECT id + 1
FROM unused t
WHERE NOT EXISTS
(
SELECT 1
FROM unused ti
WHERE ti.id = t.id + 1
)
ORDER BY
id
LIMIT 1
) q2
ORDER BY
id
LIMIT 1

这个查询由两部分组成。

第一部分:

SELECT  *
FROM (
SELECT 1 AS id
) q
WHERE NOT EXISTS
(
SELECT 1
FROM unused
WHERE id = 1
)

选择一个 1 如果表中没有具有此 id 的条目。

第二部分:

SELECT  *
FROM (
SELECT id + 1
FROM unused t
WHERE NOT EXISTS
(
SELECT 1
FROM unused ti
WHERE ti.id = t.id + 1
)
ORDER BY
id
LIMIT 1
) q2

选择表中没有下一个 id 的第一个 id

结果查询选择这两个值中的最小值。

关于sql - 如何在表中获取第一个未使用的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/907284/

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