2012-02-23 10 views
37

MySQL複数の行を返すSELECTサブクエリを使用してテーブルにINSERT INTOする方法はありますか?MySQL複数の行を返すSELECTサブクエリを持つテーブルにINSERT INTOする方法はありますか?

INSERT INTO Results 
    (
    People, 
    names, 
    ) 
    VALUES 
    (
    (
     SELECT d.id 
     FROM Names f 
     JOIN People d ON d.id = f.id 
    ), 

    (
     "Henry" 
    ), 
    ); 

私はは、このサブクエリから戻るすべての結果を使用して新しいテーブルを移入したい。私はERROR 1242(21000)を取得せずにこれを行うにはどうすればよい:サブクエリは複数行

+1

すべての項目を挿入するループを使用するプロシージャで使用できます。 –

+0

私はMySQLのnewbですが、どのように結果を反復処理しますか? – stackoverflow

+0

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html – Michas

答えて

88
INSERT INTO Results (People, names) 
    SELECT d.id, 'Henry' 
    FROM Names f 
    JOIN People d ON d.id = f.id 

あなたSELECTクエリで静的な文字列Henryを組み合わせ返します。

+0

複数の名前がある場合はどうなりますか? 「ヘンリー」だけでなく、私はそれらの上に_iterate_が必要です。 –

6
INSERT INTO Results 
    (
    People, 
    names, 
    ) 
    SELECT d.id, 'Henry' 
    FROM Names f 
    JOIN People d ON d.id = f.id 
+0

That doest work http://decoding.wordpress.com/2008/10/11/sql-server-insert-into-with-subquery/ – stackoverflow

+0

投稿を編集しました – triclosan

8
INSERT INTO Results 
    (
    People, 
    names, 
    ) 
    VALUES 
    (
    (
     SELECT d.id 
     FROM Names f 
     JOIN People d ON (d.id = f.id) limit 1 
    ), 

    (
     "Henry" 
    ), 
    ); 
+8

ようこそスタックオーバーフロー!コードブロックを投稿するだけでなく、このコードが問題を解決する理由を説明してください。説明がなければ、これは答えではありません。 –

+1

これは本当に質問に答えません。 ** [すべての結果**をこのサブクエリから返す]で新しいテーブルを作成しました。これはサブクエリの結果を1つの行に制限します。 (私はこの答えが4歳以上であることを知っていますが、とにかくこれを指摘したいと思いました。) – MJV

5

これは私がうまくいきました。もう少し長いですが、余分なデータを何度もシャッフルする必要があります。

テーブル2のtable1に複数の行を値で挿入します。 例: "、 "値"、 "1900-01-01" 9999-:という

INSERT INTO table1 (col1, col2, col3, col4, col5) 
SELECT "Value", col2, col3, "1900-01-01","9999-12-31" 
FROM table2 t2 
WHERE t2.val2 IN (MULTIPLE VALUES) 
AND (Another Conditional); 

注:

INSERT INTO table1 (col1, col2, col3, col4, col5) 
SELECT col1,col2,col3,col4,col5 
FROM table2 t2 
WHERE t2.val2 IN (MULTIPLE VALUES) 
AND (Another Conditional); 

あなたは、繰り返しデータを複数の行を挿入取得するためにハードコードされた値を挿入することができます12-31 "が挿入されたすべての行にわたって繰り返されます。

-1

に挿入します。ec_element(parentid、name)は、element_idを選択し、ec_elementの 'STARTUP'はname = 'BG'です。

insertステートメントは、条件が満たされたテーブルとラベル文字列から値elementidをとります。

関連する問題