2012-05-03 271 views
2

任何人都可以提供一個SQL查詢的語法,它接受一個已經創建的表,並將一些數據插入一個新的表(新的ID)(主鍵)?到目前爲止,我試過這個SQL查詢創建一個新表

SELECT ((ID INT IDENTITY(1,1) PRIMARY KEY), column1, column2, column3) 
INTO table_name 
FROM table_name 

我一直想出一個語法錯誤。

+0

只是爲了理解:爲什麼不直接複製'from'表,然後用「alter-table」語句更改主鍵? – Kai

+0

您不能將列聲明插入到表格行中。你的例子是從table_name中選擇table_name - 你可能想更新你的例子,使它更清晰,你(你呢?)是指INTO target_table FROM source_table。 – Cylindric

回答

2
INSERT INTO new_table 
(Column1, Column2 . . .) 

SELECT Column1, Column2 FROM old_table 

請勿在插入列表中包含標識列(帶有自動生成數字的主鍵)。

3
INSERT INTO newtable (column1, column2, column3) 
SELECT (column1, column2, column3) 
FROM table_name 
2

就讓它像下面,邁上了一個新的ID將被自動同時插入記錄

insert into table1 (col1,col2,col3) select col1,col2,col3 from table2; 
4
SELECT column1, column2, column3 
INTO table_name_new 
FROM table_name_old 

使用這樣

1

按照documentation on MSDN創建的IDENTITY屬性將通過SELECT INTO子句轉移,但約束不會。這意味着如果包含源表中的原始IDENTITY列,但是新表中的列不會是主鍵,則可以使用IDENTITY列創建新表。

完成此操作的理想方法是在創建表後使用ALTER TABLE,正如@Kai所建議的那樣。