2010-03-04 66 views
0

选择什么,我试图做的是这样的:插入许多行,用一个静态字段和字段从另一个表

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

除了我不能把“1为ID2”是select语句里面。

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

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

我把这个在一个存储过程,并通过LINQ2SQL(如文本变量传递)产生的select语句。我很高兴以某种方式将'id2'放入linq2sql命令文本中,但是生成(正确)的sql只会将实际的Table2列放入查询中(只是'id1')。

,我真的不希望有做一些字符串格式化插入文本”,1为ID2' 在SQL命令文本..

还我不能离开ID2为空,因为它是对它有FK约束。

+0

外键约束不会阻止插入NULL值。 – 2010-03-04 00:13:22

+0

这可以用tempdb以某种方式完成吗?选择ids只进入tempdb,然后将它们与id2一起移动到Table1中? – benpage 2010-03-04 00:13:24

+0

@Mark - 对不起,我不太清楚这个评论。我不想将空值放在那里,因为它们应该总是将字段id2作为数据。 – benpage 2010-03-04 00:14:23

回答

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 
0
INSERT INTO Table1 (id1, id2) SELECT id, 1 as id2 FROM Table2 
+0

呃..我说'我不能把'1'作为id2'在select语句' – benpage 2010-03-04 00:18:41

0

您可以使用自己的SQL稍作修改。

INSERT INTO Table1 (id1, id2) 
(
    SELECT id, 1 FROM Table2 
) 
相关问题