首页 > 解决方案 > 将具有一个不同值的多行插入表中

问题描述

我相信我的问题有点简单,但我在搜索时没有找到类似的东西。我想插入测试多行的表中,例如:

('03','ENG','203') ('03','ENG','403') ('03','ENG','155') ('03','ENG','222 ') ('03','ENG','456') ('03','ENG','111') ...

而不是写

insert into testing
values('03','ENG','203')
,('03','ENG','403')
,('03','ENG','403')
,('03','ENG','155')
,('03','ENG','222')
,('03','ENG','456')
,('03','ENG','111')

..

有没有更快的方法来写类似的东西

insert  into testing
select ('03','ENG',x)
where x in ('203',...)

如果我不必使用动态sql就更好了。提前致谢。

标签: sqlsql-server

解决方案


我不确定它是否更简单,但您可以在第三列中使用子句insert . . . selectvalues()

insert into testing
    select '03', 'ENG', col3
    from (values ('203'), ('403'), ('155'), . . . 
         ) v(col3);

如果表中有一个 column3 的列表并且没有重复项,则可以使用:

insert into testing
    select '03', 'ENG', t.col3
    from column3_table t 
    where t.column3 in ('203', '403', '155', . . . );

推荐阅读