2016-05-03 3 views
0

私は一度に約10,000〜20,000のエントリが入っているテーブルを持っています。このテーブルは別のテーブルをIDで参照する必要がありますが、そのIDはまだわかりません。私は親テーブルについて知っているいくつかの情報を持ってMySQLクエリを使用してそれを見つける必要があります...MySQL SELECTクエリを一度実行し、それを膨大な挿入クエリで使用するにはどうすればよいですか?

テーブルの例...

ParentTable 
- id - int, primary key, auto incriment 
- name - varchar 
- type - varchar 

ChildTable 
- id - int, primary key, auto incriment 
- parent_table_id - int 
- name - varchar 

私は

SELECT id FROM ParentTable WHERE name='SomeName' AND type='SomeType'; 

...このようなMySQLのクエリを実行する方法が必要になり、その後、そのようChildTableを移入することMySQLのクエリの結果を使用します。 ..

INSERT INTO ChildTable (parent_table_id, name) VALUES 
    (previous_result, "SomeName1"), 
    (previous_result, "SomeName2"), 
    (previous_result, "SomeName3"), 
    (previous_result, "SomeName4000"), 
    (previous_result, "SomeName10000"), 
    (previous_result, "SomeName20000"); 

キャッチは、ParentTableの選択クエリを1回だけ実行したいということです。これは厳密にMySQLを使用して可能ですか?

+0

テンポラリテーブルに行を挿入して、結合されたselectから一括挿入します。 – Andreas

+0

私はMySQLのように大雑把なので、私はどのようにそのようなことをやってみるのか試してみるでしょうが、あなたは@Andreasのやり方を学ぶチュートリアルの提案がありますか? – Ricky

+0

@Ricky、あなたはすべてのレコードが同じparent_table_idを持っていると言っていますか? – FLICKER

答えて

0

私の問題に対する答えが見つかりました!

SELECT id INTO @parent_id FROM ParentTable WHERE name='SomeName' AND type='SomeType'; 

INSERT INTO ChildTable (parent_table_id, name) 
    VALUES 
     (@parent_id, "New"), 
     (@parent_id, "New1"), 
     (@parent_id, "New2"), 
     (@parent_id, "New3"), 
     (@parent_id, "New4"), 
     (@parent_id, "New5"), 
     (@parent_id, "New6"); 
+1

変数を使うことは私があなたに示唆したものであり、あなたはそれをすることができないと言いました。ところで、あなたはparent_idにidを格納していますが、挿入するときは@warehouse_idを使用します。それはタイプミスですか? – FLICKER

+0

私はあなたがプログラミング言語で変数を使うつもりであると思っていました(私のクエリはC++を使い果たしています)。それでは、私はそれを増強します、ありがとう。はい、それはタイプミスです、それを修正してください。 – Ricky

関連する問題