2010-03-04 96 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 
) 
相關問題