我有一个包含值的列表。我想使用单个INSERT
语句在SQL表中插入这些值。
示例:说,有一个包含名称的列表(列表的大小不是常量)。有一个STUDENTS
表,其中包含NAME
列。我想使用单个STUDENTS
语句在INSERT
表中插入列表中的名称。
现在我遍历列表并在表中插入值。这意味着,insert语句的数量等于列表的长度。
List<String> Name;
foreach (String s in Name)
{
INSERT INTO STUDENTS (NAME) VALUES (s)
}
有没有办法可以在单个SQL INSERT
语句中完成此操作?非常感谢任何帮助。
答案 0 :(得分:5)
在MySql中你可以这样做
INSERT INTO tbl (f1,f2) VALUES(1,2),(3,4),(5,6)...(55,77);
对于mssql方言都是一样的
答案 1 :(得分:0)
Union可以用来实现这一目标,尽管技术上每个联盟都是它自己的声明。
简短演示:
create table #i(hello int)
insert into #i select 1 union all select 2
select * from #i
drop table #i
还有其他/更好的方法可以从列表中填充表格......这取决于您所使用的数据库。
答案 2 :(得分:0)
要使用单个INSERT
执行此操作,请使用SELECT ..您必须将列表转换为:
INSERT STUDENTS(NAME)
SELECT 'Tom'
UNION ALL
SELECT 'Bill'
UNION ALL
SELECT 'Sarah'
答案 3 :(得分:0)
如果您的列表位于临时表中,则可以使用以下语法:
insert into tblname
(columnlist)
select name from temptable;