1

In SQL Server versuche ich 375 Zeilen in eine bereits vorhandene Tabelle einzufügen.Mehrere einfügen in bereits vorhandene Tabelle mit fehlenden Identitätsspalte

Die Tabelle hat keine Identitätsspalte, aber die ID Spalte ist eindeutig und ich möchte eindeutige ID für jede 375 Zeilen eingeben. Ich habe versucht, max(id)+1 zu tun, aber für alle 375 Zeilen, es eingefügt, die gleiche ID und Daten wurden vermasselt. Ich kann die Spalte id nicht ändern, da die Tabelle mehr als Millionen Zeilen enthält.

Code wie unten angegeben:

declare @id int 

set @id = select max(id) from tablename; 

Insert into tablename (id, column 1, column 2, column 3, ..... column 20) 
    select @id + 1, column1, column2, column 3, ........, column 20 
    from tablename1 
    where column15 IN (1,2,3,4,.........,375) 
+0

erstellen 'SEQUENCE' – Sami

+0

können Sie bitte etwas mehr erklären? – Shinu

+0

Sie können in der Lage sein, so etwas zu tun ... '@id + ROW_NUMBER() wählen Über (Partition nach Spalte1 Reihenfolge nach Spalte1)' –

Antwort

0

Wie wäre es nur row_number verwenden.

declare @id int 

set @id = (select max(id) from tablename) 

Insert into tablename (id, column 1, column 2, column 3, ..... column 20) 

select 
    row_number() over (order by (select null)) + @id, 
    column1, 
    column2, 
    column 3, 
    ........, 
    column 20 
from tablename1 
+1

Vielen Dank. es funktionierte :) – Shinu

Verwandte Themen