2016-06-29 14 views
0

私のdbmの知識はまだかなり限られているので、この問題にどのようにアプローチ/解決するかはわかりません。私はINSERT INTOの2つのテーブルの1つ、たとえばtable1とtable2にしたいが、SELECTサブクエリの後までどのテーブルがわからない。このような何か:MySQLが単一のステートメントで(条件付き選択のテーブルに)挿入する

INSERT INTO (SELECT tblname) SELECT *, IF(somecondition, 'table1', 'table2') as tblname FROM `anothertable` WHERE id = 'someid' 

私はテストとしてこれを試してみました:

INSERT INTO (SELECT tblname) SELECT *, 'table1' as tblname FROM `anothertable` WHERE id = 'someid' 

しかし、それは動作しませんでした。

は、私が(!そう便利です)、私はSELECT文でサブクエリを使用することができます知っている、と私は技術的に私がNOT EXISTS 2内の文で欲しいものを達成できることを、と私は私は2つのテーブルにINSERT、そして私がいることを知ることができない知っています@ user変数を使用することは、ステートメント(see docs)内では信頼できません。だから、私が欲しいものを達成するための方法はありますか?

+0

私は、単一のstmtの外では、ストアドプロシージャの呼び出しではないとは思いません。条件付きの結合はありますが、条件付きの表はありません – Drew

+0

次のようなPrepared Stmtにいつもつなげることができることを忘れないでください。http://stackoverflow.com/a/38295132 – Drew

答えて

2

ケースステートメントで行うことができます。

SELECT CASE WHEN (SELECT IF(somecondition, 'table1', 'table2') as tblname FROM `anothertable` = 'table1') 
    THEN <QUERY A> 
    ELSE <QUERY B> 
END 
+0

こんにちは、私はこれを試してみました。何もうまくいかないようです。 – insaner