2012-10-24 49 views
2

我想使用現有的表已經使用來創建一個新表:如何將行號添加到SQL中的新表中?

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

您可以使用into條款與IDENTITY柱:

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

Here更多的信息

您還可以創建表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上的this解決方案。

+0

選擇到創建一個新表。如果表已經存在,那麼這可能是一個問題。 – Kaf

+0

是的,我知道,但我增加了一個解決方案,如何創建表_correctly_。 – Parado

5
INSERT INTO NewTable (...,...) 
SELECT ROW_NUMBER() OVER (ORDER BY order_column), * from SampleTable 
1

如果您是在SQL Server

INSERT INTO newTable (idCol, c1,c2,...cn) 
SELECT ROW_NUMBER() OVER(ORDER BY c1), c1,c2,...cn 
FROM oldTable 
相關問題