日期:2014-05-18  浏览次数:20457 次

SQL疑难两个 求解决
1.在编程过程中,数据库中各表的id自增字段都不是从1开始了,有什么办法可以让id还是从1开始么?
2.在SQL2000中,如何SELECT才能生成一列序号,就是1 2 3 4 5....这种?

------解决方案--------------------
1.http://hi.baidu.com/t128cn/blog/item/fab4e1566dadd156d00906ef.html


------解决方案--------------------
SQL code
1.在编程过程中,数据库中各表的id自增字段都不是从1开始了,有什么办法可以让id还是从1开始么?

这个没有什么好办法 可以删除自增列 然后再增加自增列
2.在SQL2000中,如何SELECT才能生成一列序号,就是1 2 3 4 5....这种?

select id=identity(int,1,1),* into #tb from tb
select * from #tb

------解决方案--------------------
没有办法的 可以试试重建一张表 把之前的弄过去 后面加into new table试试
------解决方案--------------------
补充上面的
 可以试试这样
select * into b from a
进行重新排列 到另外一张表
------解决方案--------------------
SQL code
alter table tbname set identitent(reseed,1)

------解决方案--------------------
两个均没有必要
实在需要
在必要的时候用临时表或者子查询实现ID连续

------解决方案--------------------
SQL code
--#1.
--1.编程时,用row_number()函数来生成连续的ID。
--2.重新生成连续的ID的确没有必要。如果需要则先删除ID列,再加ID int identity(1,1)列来实现
--#2.sql server 2000
select
    new_id = (select COUNT(*) from table_test where ID <= T.ID),
    *
from table_test T

------解决方案--------------------
探讨

SQL code
1.在编程过程中,数据库中各表的id自增字段都不是从1开始了,有什么办法可以让id还是从1开始么?

这个没有什么好办法 可以删除自增列 然后再增加自增列
2.在SQL2000中,如何SELECT才能生成一列序号,就是1 2 3 4 5....这种?

select id=identity(int,1,1),* into #tb from tb
select * from #……

------解决方案--------------------
1.在编程过程中,数据库中各表的id自增字段都不是从1开始了,有什么办法可以让id还是从1开始么?
导入到临时表中,新添加一个自增列。
2.在SQL2000中,如何SELECT才能生成一列序号,就是1 2 3 4 5....这种?
identity int(1,1)