5

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

INSERT INTO NewTable (...,...)
   SELECT * from SampleTable

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

样品表

Elizabeth  RI 02914
Emily      MA 01834

预期的新表

1 Elizabeth  RI 02914
2 Emily      MA 01834

这有可能吗?

这就是我最终的目标......除了现在这些表的大小不同,因为我需要我的 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
4

4 回答 4

9

您可以将into子句与IDENTITY列一起使用:

SELECT IDENTITY(int, 1,1) AS ID_Num, col0, col1
INTO NewTable
FROM OldTable;

这里有更多信息

您还可以创建带有identity字段的表:

create table NewTable
(
  id int IDENTITY,
  col0 varchar(30),
  col1 varchar(30)
)

并插入:

insert into NewTable (col0, col1)
SELECT col0, col1   
FROM OldTable;

或者,如果您有 NewTable 并且想要添加新列,请在 SO 上查看此解决方案。

于 2012-10-24T20:43:05.230 回答
8
INSERT INTO NewTable (...,...)
SELECT ROW_NUMBER() OVER (ORDER BY order_column), * from SampleTable
于 2012-10-24T20:46:52.160 回答
2

如果您在 SQL Server 中

INSERT INTO newTable (idCol, c1,c2,...cn)
SELECT ROW_NUMBER() OVER(ORDER BY c1), c1,c2,...cn
FROM oldTable
于 2012-10-24T20:47:17.037 回答
0

试试这个查询来插入 1,2,3... 用你的列名替换 MyTable 和 ID。

DECLARE @myVar int
SET @myVar = 0
UPDATE
  MyTable
SET
   ID =  @myvar ,
   @myvar = @myVar + 1
于 2019-12-03T22:17:33.890 回答