Sql 如何在不创建或插入或cte的情况下生成与插入相同的行号

Sql 如何在不创建或插入或cte的情况下生成与插入相同的行号,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我有以下脚本: Create table #temp (id int,name varchar(10),city varchar(10),sal int) Insert into #temp Select 2,'kishor','hyd', 100 Union all Select 3,'kumar','sec', 200 Union all Select 4,'santosh','kp', 300 Union all Select 1,'sudeep','myp', 300 现在,我想使用一

我有以下脚本:

Create table #temp (id int,name varchar(10),city varchar(10),sal int)
Insert into #temp
Select 2,'kishor','hyd', 100
Union all
Select 3,'kumar','sec', 200
Union all
Select 4,'santosh','kp', 300
Union all
Select 1,'sudeep','myp', 300
现在,我想使用一条select语句生成与插入的数据相同的行号,而不使用create或insert或CTE或Update命令。
因此,即使按任何顺序排序后,行号列也不应更改其值

您应该向表中添加自动递增字段,以保存有关插入顺序的信息。 然后使用例如获取行数:

select #temp.*,
       ROW_NUMBER() over (order by <your autoincrement field here> ) as RowNumber
       from #temp

表没有固有的顺序。如果您需要一个特定的顺序,您需要识别一个包含该信息的列,或者如果我们按照该列进行排序,将生成您想要的顺序。如果您当前没有此类列,则需要添加一个。当然,以前对列的所有引用也可以是一组列