use*_*702 3 sql t-sql sql-server
我有一个脚本需要在表中插入50多行,有没有办法循环我要插入的每一行,而不是在TSQL中将此语句编码50次以上?
IFEXISTS ( SELECT 1 FROM table where column 1 = )
UPDATE table
Column1 = value,
Column2 = value,
Column3 = value,
Column4 = value
WHERE column 1 =
ELSE
INSERT INTO table
(Column1, Column2, Column3, Column4)
VALUES
(value, value, value, value)
Run Code Online (Sandbox Code Playgroud)
更好的是,您可以将记录放在临时表中,然后更新所有存在的内容并插入两个查询不存在的所有内容.
例:
select Column1 = 1, Column2 = 2, Column3 = 3
into #temp
union all select 1,2,3
union all select 1,2,3
union all select 1,2,3
...
union all select 1,2,3
update t
set Column1 = p.Column1, Column2 = p.Column2, Column3 = p.Column3
from table t
inner join #temp p on p.Column1 = t.Column1
insert into table (Column1, Column2, Column3)
select p.Column1, p.Column2, p.Column3
from #temp p
left join table t on t.Column1 = p.Column1
where t.Column1 is null
drop table #temp
Run Code Online (Sandbox Code Playgroud)