我有一个以 column=ID 为索引的表,它是一个 5 位整数。
这是一个非常古老的表,从未自动递增。
我想列出所有未使用的 ID。
我可以用一个SELECT * ORDER BY
语句来做,然后对一个递增的for()
循环运行结果,但我想知道是否有人知道是否有一个 SQL 查询语句在 MySQL 中执行此操作,或者你是否有比我计划采用的方法更聪明的方法.
谢谢
你可以做这样的查询
SELECT id+1 as startId, (SELECT MIN(t3.id) -1 FROM table t3
WHERE t3.id > t1.id) as endId
FROM Table AS t1
WHERE
NOT Exists
(
SELECT t2.id
FROM Table as t2
WHERE t2.id+1 = t2.id
)
HAVING (SELECT MIN(t3.id) -1 FROM table t3
WHERE t3.id > t1.id) IS NOT NULL
我知道这适用于插入......也许也适用于更新......会测试它,但我现在在 Windows pc 上并且没有安装 mysql :)
select @i := 1;
update tbl set id = @id:=@id+1;
http://www.electrictoolbox.com/autoincrement-value-mysql/
更新:
它现在经过测试并且效果很好......从
select @i := 0;
以便您在数据库中的第一个条目以 1 开头;