SQL - 如何在自动生成的临时表中添加自动递增的ID?

5

我有一个类似下面的查询,它根据参数自动生成一个临时表。因此,这个表的列数可能会变化。现在,我需要在这个表中添加一个自动增量id列。我该怎么做呢?

SELECT @SourceFields INTO ##StoreSourceInfo FROM testdb.dbo.@SourceTable

注意:1)源字段的数量和表名通过参数@SourceFields & @SourceTable传递。 2)因此,##StoreSourceInfo表中的列数可能会有所变化。

当前结果:

select * from ##StoreSourceInfo仅显示可用的列。

期望结果: select * from ##StoreSourceInfo查询将显示一个额外的自增id列,以及临时表中的所有其余列。

希望您明白。提前致谢。


你的临时表怎么样使用 ALTER TABLE 语句? - techBeginner
解决方案是:SELECT IDENTITY(int, 1,1) AS id, @SourceFields INTO ##StoreSourceInfo FROM testdb.dbo.@SourceTable。 - riad
4个回答

12
SELECT
  IDENTITY(INT, 1, 1) AS id
INTO #Temptable
FROM User

5

您可以使用 row_number 函数。

Select ROW_NUMBER() over (order by T.field1) rownum
, T.field1, T.field2 into #temp1 
from @Table T

3

您需要尝试以下查询来获取您期望的结果以添加额外的自动增量列:

SELECT 
    IDENTITY(INT, 1,1) AS Rank, 
    @SourceFields 
INTO 
    ##StoreSourceInfo 
FROM 
    testdb.dbo.@SourceTable

意思是应用IDENTITY函数...

3

1
谢谢。解决方案是:SELECT IDENTITY(int, 1,1) AS id, @SourceFields INTO ##StoreSourceInfo FROM testdb.dbo.@SourceTable - riad
警告!这将在您的数据库中实际创建一个新表格!如果您想使该表格真正成为临时表格,请像更受欢迎的解决方案所示,在其名称前加上“#”前缀。 - jeancallisti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接