2011-05-05 91 views
17

請原諒我,因爲我對SQL比較陌生。但我試圖從一個表上的SELECT查詢中獲取修改後的數據,並使用它將數據填充到另一個表中。基於SELECT結果的SQL INSERT

SELECT ID FROM TABLE WHERE VALUE=10 

我要插入產生的ID到另一個表,但有修改該值:

1stString.ID.2ndString

我已經找到了如何使用答案在插入中來自SELECT的ID,但我似乎無法在連接時使它工作。也有我插入其它的價值觀,但他們的文字(我想在另一個表中給出的ID的初始化默認鍵設置。

使用MS SQL Studio 2008的,順便說一句。

+1

告訴我們你有什麼試過 – BlackBear 2011-05-05 20:52:58

回答

29
INSERT INTO table (field) 
SELECT '1stString.' + cast(id as varchar(50)) + '.2ndString' 
FROM table2 
WHERE id = 10 

編輯 - 迴應評論: 你在正確的軌道上,但你想從表中選擇您的硬編碼字符串,像這樣:

INSERT INTO table1 (field1, field2, field3) 
SELECT '1stVal', '2ndVal', '1stString.' + cast(id as varchar(50)) + '.2ndString' 
FROM table2 
WHERE id = 10 

這也是illustrat在達斯汀萊恩的回答中。

+0

SQL Studio仍然使用+來表示字符串連接嗎?如果不是,那將是||。 – 2011-05-05 22:20:25

+1

這似乎是一個很好的解決方案。如果我需要插入更多值,那麼不是來自table2? – 2011-05-06 03:12:25

+1

^最後的評論被切斷。例如,如果我想將「1」,「String」,「1stString。」+ cast(id爲varchar(50))+'.2ndString'放入表格的各個列中, table2是「id」。它會被插入到table1(field1,field2,field3)'firstval','2ndval',SELECT'1stString'中。 + cast(id as varchar(50))+'.2ndString'FROM table2 WHERE otherID = 10?對不起,格式化與評論棘手... – 2011-05-06 04:27:15

6
INSERT table1 
(
    f1, f2, f3, f4 
) 
SELECT f1, f2, f3, 'defaultval' as f4 
FROM table2 
WHERE value = 1