如何在SQL中向新表添加行号?

use*_*421 3 sql-server-2005 insert-into

我正在尝试使用已经使用的现有表创建一个新表:

INSERT INTO NewTable (...,...)
   SELECT * from SampleTable
Run Code Online (Sandbox Code Playgroud)

我需要的是在开头或结尾添加一个记录号,只要它在那里就没关系.

样本表

Elizabeth  RI 02914
Emily      MA 01834
Run Code Online (Sandbox Code Playgroud)

预期新表

1 Elizabeth  RI 02914
2 Emily      MA 01834
Run Code Online (Sandbox Code Playgroud)

那可能吗?

这就是我最终拍摄的内容......除了现在这些表格的大小不同,因为我需要我的ErrorTemporaryTable有一个列,其中第一行的数字比前一个增加一个.

declare @counter int
declare @ClientMessage varchar(255)
declare @TestingMessage carchar(255)
select @counter = (select count(*) + 1 as counter from ErrorValidationTesting)
while @counter <= (select count(*) from ErrorValidationTable ET, ErrorValidationMessage EM where ET.Error = EM.Error_ID)
begin
    insert into ErrorValidationTesting (Validation_Error_ID, Program_ID, Displayed_ID, Client_Message, Testing_Message, Create_Date)
    select * from ErrorTemporaryTable

    select @counter = @counter + 1

end
Run Code Online (Sandbox Code Playgroud)

Ale*_*nko 6

INSERT INTO NewTable (...,...)
SELECT ROW_NUMBER() OVER (ORDER BY order_column), * from SampleTable
Run Code Online (Sandbox Code Playgroud)


Rob*_*ert 5

您可以使用into带有IDENTITY列的子句:

SELECT IDENTITY(int, 1,1) AS ID_Num, col0, col1
INTO NewTable
FROM OldTable;
Run Code Online (Sandbox Code Playgroud)

是更多信息

您还可以使用identity字段创建表:

create table NewTable
(
  id int IDENTITY,
  col0 varchar(30),
  col1 varchar(30)
)
Run Code Online (Sandbox Code Playgroud)

并插入:

insert into NewTable (col0, col1)
SELECT col0, col1   
FROM OldTable;
Run Code Online (Sandbox Code Playgroud)

或者如果您有NewTable并且想要添加新列,请参阅解决方案.