填充自动增量

时间:2015-09-03 15:17:33

标签: sql sql-server-2008

假设我有这样的表结构:

create table #Test (name varchar(100))
insert into #Test (name) values ('Ian')
insert into #Test (name) values ('Dave')
insert into #Test (name) values ('Simon')
insert into #Test (name) values ('Tim')
insert into #Test (name) values ('Andy')
insert into #Test (name) values ('Sarah')

如何获得这样的结果集:

1 Ian
2 Dave
3 Simon
4 Tim
5 Andy
6 Sarah

我尝试使用行号()和密集等级(),但我没有成功。

1 个答案:

答案 0 :(得分:0)

使用row_number() over (order by (select null))可能有效,但我认为顺序不保证按插入顺序排列 - 如果未明确排序,则从select语句返回的数据表示无序集。

最佳解决方案是在插入时添加标识列或时间戳。

select * , r = row_number() over (order by (select null)) from #Test

或者您可以更改表格以添加标识列,如下所示:

alter table #test add id int identity(1,1)