我需要在临时表中选择一堆数据然后进行一些二次计算; 为了使其更有效地工作,我希望在该表上有一个IDENTITY列.我知道我可以先用一个标识声明表,然后将其余的数据插入其中,但是有没有办法在一步中完成它?
哦,你们有点信仰:
SELECT *, IDENTITY( int ) AS idcol INTO #newtable FROM oldtable
http://msdn.microsoft.com/en-us/library/aa933208(SQL.80).aspx
您评论说:如果oldtable具有标识列,则无法正常工作.
我想那是你的答案.#newtable自动从oldtable获取标识列.运行下一个语句:
create table oldtable (id int not null identity(1,1), v varchar(10) ) select * into #newtable from oldtable use tempdb GO sp_help #newtable
它向您显示#newtable确实具有标识列.
如果您不想要标识列,请在创建#newtable时尝试:
select id + 1 - 1 as nid, v, IDENTITY( int ) as id into #newtable from oldtable