sql >> Database >  >> RDS >> Sqlserver

Hoe records invoegen op basis van de vorige invoeging?

Probeer dit

Ingangen

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' 

Zoekopdracht

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

select * from @tblA
select * from @tblB

Uitvoer: [ Voor beide tafel A &B]

ID-naam

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

In principe voeg ik die records in TableA van TableC in waarvan de id's even zijn. En dan door de Output-clausule te gebruiken die de waarden van TableA naar TableB invoegt

Voor meer informatie OUTPUT-clausule

Ik hoop dat dit logisch is



  1. Waarom kan mijn C-programma in git bash draaien, maar niet in cmd?

  2. Sql-serverunie maar houd de volgorde aan

  3. Replicatie tussen SQL Server en MYSQL

  4. Vervang de null-waarde door de vorige beschikbare waarde in Row SQL-serverquery