我有一个以column = ID索引的表,它是一个5位整数。
这是一张非常古老的桌子,从不自动增加。
我想列出所有未使用的ID。
我可以使用SELECT * ORDER BY
语句执行此操作,然后针对递增的for()
循环运行结果,但我想知道是否有人知道SQL查询语句是否在MySQL中执行此操作或者如果您有一个比我计划采取的方法更聪明的方法。
由于
答案 0 :(得分:1)
这是我要采取的方法。
number
表(n是您的最大ID)。可以使用as this等查询生成数字。LEFT JOIN
表执行number
,仅获取NULL
个结果。答案 1 :(得分:0)
你可以这样做一个查询
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
答案 2 :(得分:0)
我知道这适用于插入...也许可以使用更新....会测试它但我现在在Windows PC上没有安装mysql:)
select @i := 1;
update tbl set id = @id:=@id+1;
http://www.electrictoolbox.com/autoincrement-value-mysql/
更新:
现在已经过测试,效果非常好......从
开始select @i := 0;
以便您在db中的第一个条目以1开始;