插入许多行,其中一个静态字段和从另一个表中选择的字段

时间:2010-03-04 00:11:00

标签: sql linq-to-sql

我想做的是:

INSERT INTO Table1 (id1, id2)
(
    SELECT id, 1 as id2 FROM Table2
)

除了我不能把'1 as id2'放在select语句中。

所以,作为一个例子,我有点想要这个:

INSERT INTO Table1 (id1, id2 = 1)
(
    SELECT id FROM Table2
)

我将它放在存储过程中,而select语句由linq2sql生成(作为文本变量传递)。我很高兴以某种方式将'id2'放入linq2sql命令文本中,但是生成(正确)的sql只会在查询中放入实际的Table2列(只是'id1')。

我真的不想做一些字符串格式化来在sql命令文本中插入文本',1 as id2'..

我也不能将id2保留为null,因为它有一个FK约束。

3 个答案:

答案 0 :(得分:0)

INSERT INTO Table1 (id1, id2) SELECT id, 1 as id2 FROM Table2

答案 1 :(得分:0)

确定了:

create table #tmp
( id1 int)

insert into #tmp (id1)
(
    select top 10 id1 from Table1
)

insert into Table2 (id1, id2) 
(
    select id1, 5 from #tmp
)

drop table #tmp

答案 2 :(得分:0)

您可以使用自己的sql进行轻微编辑。

INSERT INTO Table1 (id1, id2)
(
    SELECT id, 1 FROM Table2
)