我有一个索引在column=ID上的表,它是一个5位数的整数。
这是一个非常旧的表,并且从未自动递增。
我想列出所有未使用的ID。
我可以使用SQL语句来做这件事,然后对一个递增的for()循环运行结果,但是我想知道是否有人知道在MySQL中是否有SELECT * ORDER BY查询语句来做这件事,或者您是否有比我计划采用的方法更聪明的方法。
谢谢
发布于 2012-11-29 04:26:38
这是我会采取的方法。
number表(n是您最大的ID)。可以使用这样的查询来生成数字:as this.LEFT JOIN to the number table,并且只获取NULL结果。发布于 2012-11-29 04:32:31
您可以像这样进行查询
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发布于 2012-11-29 05:15:25
我知道这对嵌入物很有效...也许也适用于更新...我会测试它,但我现在在windows pc上,并且没有安装mysql :)
select @i := 1;
update tbl set id = @id:=@id+1;http://www.electrictoolbox.com/autoincrement-value-mysql/
更新:
它现在经过测试,效果非常好。开始于
select @i := 0;这样你在数据库中的第一个条目就会以1开头;
https://stackoverflow.com/questions/13613702
复制相似问题