5

既に使用している既存のテーブルを使用して新しいテーブルを作成しようとしています:

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

必要なのは、最初または最後にレコード番号を追加することです。そこにある限り、それは実際には問題ではありません。

サンプルテーブル

Elizabeth  RI 02914
Emily      MA 01834

将来の新しいテーブル

1 Elizabeth  RI 02914
2 Emily      MA 01834

それはまったく可能ですか?

これは私が最終的に狙っているものです...ただし、最初の行に前の行が 1 つずつ増加する番号を持つ列を 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 に答える