比如我有一张表,id 不是自增长,是我指派 的id
id name
1 张三
2 李四
3 王五
4 赵六
5 孙七
6 侯八如果我删除几条.变成
id name
3 王五
6 侯八
那么我再插入数据时我想依次得到 1, 2, 4 ,5 或者反过来也可,就是缺哪个补哪个。
有高手一条sql语句能完成的吗?最好不要存储过程.
id name
1 张三
2 李四
3 王五
4 赵六
5 孙七
6 侯八如果我删除几条.变成
id name
3 王五
6 侯八
那么我再插入数据时我想依次得到 1, 2, 4 ,5 或者反过来也可,就是缺哪个补哪个。
有高手一条sql语句能完成的吗?最好不要存储过程.
id的连续和间断有用吗?????
如果你不想ID间断。那你为什么不在表中再加一个标志删除的字段isdel(=1标志删除)删除的时候isdel置1
然后再实现你要的效果:
用更新最前面的记录的内容来达到insert的目的。
update tablename set name='张三' where id in (select top 1 id from tablename where isdel=1 order by id)
如:
update tableA set SC = 1 where [id] = 1等要插入新数据的时候,可以根据记录的状态来选出删除的ID
select id from tableA where SC = 0
插入数据的时候使用Update而不是使用Insert
所以要讲求速度
这个ID就是你需要的值吧
select top 1 case id when 1 then (select top 1 id=(id+1) from test where id+1 not in(select id from test) order by id asc) else 1 end from test a order by id asc