Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie füge ich Datensätze basierend auf der vorherigen Einfügung ein?

Versuchen Sie dies

Eingaben

declare @tblA table (id int,name varchar(20))
declare @tblB table (id int,name varchar(20))
declare @tblC table (id int identity,name varchar(20))
insert into @tblC 
    select 'name1' union all select 'name2' union all
    select 'name3' union all select 'name4' union all
    select 'name5' union all select 'name6' union all
    select 'name7' union all select 'name8' union all
    select 'name9' union all select 'name10' union all
    select 'name11' union all select 'name12' union all
    select 'name13' union all select 'name14' union all
    select 'name15' union all select 'name16' union all
    select 'name17' union all select 'name18' union all
    select 'name19' union all select 'name20' 

Abfrage

insert @tblA 
output INSERTED.id, INSERTED.Name
into @tblB 
select 
    id,name
from @tblC 
where id % 2 = 0

select * from @tblA
select * from @tblB

Ausgabe: [Für Tabelle A und B]

ID-Name

2   name2
4   name4
6   name6
8   name8
10  name10
12  name12
14  name14
16  name16
18  name18
20  name20

Grundsätzlich füge ich diese Datensätze aus TableC in TableA ein, deren IDs gerade sind. Und dann mit der Output-Klausel, die die Werte von TableA in TableB einfügt

Weitere Informationen finden Sie in der OUTPUT-Klausel

Hoffe das macht Sinn