问题描述
我在工作中使用了以下 sql 查询,效果很好,但是有时我需要更新 1000 多个值,而一次更新一个是一个费力的过程,有没有办法可以一次输入多个值,在这种情况下,我有产品名称,我需要为它们设置名称和部分吗?提前致谢
use [Product.Extract]
Begin TRANSACTION
Declare @name as varchar(255)
Declare @year as int
Declare @sectionid as int
-- Set variables
set @name = '225mm insulated efe'
set @year = 2021
set @sectionid = 1
--see original values
SELECT *
FROM normalisation.productmap
where term = @name
-- Insert values
INSERT INTO normalisation.productmap(name,year,sectionid)
VALUES(@name,@year,@sectionid)
解决方法
您可以对多行使用单个 insert
语句:
INSERT INTO Normalisation.productmap (name,year,sectionid)
VALUES ('name1',2020,1),('name1',2),3),. . . ;
如果值来自表,您可以使用 insert . . . select
:
INSERT INTO Normalisation.productmap (name,sectionid)
SELECT name,sectionid
FROM temp_table;
如果值来自外部文件,则可以使用 LOAD DATA INFILE
。