2009-05-13 31 views
18

TableXのcolA、TableBのcolB、TableZのcolCの値を取得するにはどうすればINSERT文を書くことができますか?SQL:INSERT INTO ... VALUES..SELECT

例:テーブルA。INSERT INTO(コーラ、COLB、COLC)VALUESことが可能である場合

任意のアイデア(?、?、?)?もちろん

+0

はこのJavaですか?シームが単純なSQLの問題になるか、何かが恋しいのか? –

+0

Javaタグが偶然追加されたようですが、削除できたら表示されます – Andomar

+0

元のポスターに何が起こったのですか? ptsはありません。管理者が回答を選択する可能性はありますか? –

答えて

33
INSERT INTO TableA(colA, colB, colC) 
    SELECT TableX.valA, TableY.valB, TableZ.valC 
    FROM TableX 
    INNER JOIN TableY ON :...... 
    INNER JOIN TableZ ON ........ 

、TABLEX、TableyのとTAbleZはまた、いくつかの他の方法(INNER JOINはない)に関連している可能性があります。

あなたはまた、3つの別々の

SELECT @value1 = valA FROM TableX WHERE ...... 
SELECT @value2 = valB FROM TableY WHERE ...... 
SELECT @value3 = valC FROM TableZ WHERE ...... 

を行い、その後、このように挿入することができ、AT ALLテーブル間のすべての関係を見つけることができない場合:あなたは、究極の最後の手段だ

INSERT INTO TableA(colA, colB, colC) 
      VALUES(@value1, @value2, @value3) 

単一のSELECTステートメントですべてを表現することはできません。インクルードは、表Aにあるよう

マルク・

+0

ヴァラ、valB、COLCは、値を取得しているので、もしVALCは...異なるテーブルから –

4
Insert into TableA (ColA, ColB, ColC) . . . 

は、列名でなければなりません

Insert into TableA (ColA, ColB, ColC) . . . 
Select TableX.Col1, TableY.Col1, TableZ.Col5 
From TableX, TableY, TableZ 
Where . . . 
+0

ok..greatです...私は、Javaでこれを使用していますが方法FRM(例:(メソッド))? –

+0

申し訳ありませんが、私はJavaをしません –

0

と間違って何もないあなたは、あなたが選択をしたいテーブルを結合する必要があります。から。ここで

は、SQL上のリソースである加入:

SQL Server Crib Sheet Compendium

22

www.w3schools.com/sql/sql_join.asp

また、SQLの基礎をカバーしていwww.simple-talk.comでみんなからこの無料のPDFブックをチェックアウトする場合があります

marc_sの回答に応じて、次のように選択したので、関係のないテーブルからクエリを実行できます。

INSERT INTO TableA 
    (colA, colB, colC) 
SELECT 
    (SELECT valA FROM TableX WHERE ...), 
    (SELECT valB FROM TableY WHERE ...), 
    (SELECT valC FROM TableZ WHERE ...) 
+4

+1 - 素晴らしい応答 - ありがとう!あなたは毎日何か新しいことを学びます.... –