2011-05-05 17 views
17

SQL için göreceli olarak yeni olduğum için beni bağışla. Ancak, bir tablodaki bir SELECT sorgusundan değiştirilmiş verileri almaya çalışıyorum ve verileri başka bir tabloya yerleştirmek için kullanıyorum.SELECT sonuçlarına dayalı SQL INSERT

SELECT ID FROM TABLE WHERE VALUE=10 

başka tablo içine çıkan kimlikleri eklemek istiyorum, ama değişikliklerle değerdir öyle ki:

1stString.ID.2ndString

Ben nasıl kullanılacağı için cevaplar buldum Eklemdeki SELECT kimliğinden değil, ancak birleştirmeye çalışırken bunu çalışamıyorum. Orada takacağım diğer değerleri de vardır, ama bunlar (ı kimlikleri başka tabloda verilmiştir için varsayılan anahtar ayarlarını başlatmak için çalışıyorum.

MS SQL Studio 2008'i kullanarak, btw değişmezleri konum.

+1

neyi denediğinizi göster – BlackBear

cevap

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

Düzenleme - yanıtı yorum yapmak: sen doğru yoldasın, ancak bu gibi, tablodan sabit kodlanmış dizeleri seçmek istiyorum:

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

Bu illustrat da Dustin Laine'nin cevabı.

+0

SQL Studio hala dizgi birleştirme için + kullanıyor mu? Değilse, || olacaktır. –

+1

Bu oldukça sağlam bir çözüm gibi görünüyor. Daha fazla değer eklemem gerekirse, bunlar tablo2'den DEĞİLDİR? –

+1

^Son yorum kesildi. Örneğin, "1", "String", "1stString." + Dökümünü (varchar (50)) + '.2ndString' ifadesini tablonun çeşitli sütunlarına koymak istiyorum. table2 "id" dir. Sadece INSERT INTO table1 (field1, field2, field3) 'firstval', '2ndval', '1stString SELECT' olur mu? + cast (değişken varchar (50)) + '.2ndString' FROM table2 NEREDE diğer = 10? Üzgünüz, biçimlendirme yorumlarla zor ... –

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