テーブル A に行を挿入したいのですが、テーブル B に別の行が存在する場合に限ります。例えばこんなもの...
IF EXISTS (SELECT * FROM B WHERE id=1)
INSERT INTO A
(id, value1, value2)
VALUES (1, 'foo', 'bar')
しかし、それはうまくいきません。どうする?
テーブル A に行を挿入したいのですが、テーブル B に別の行が存在する場合に限ります。例えばこんなもの...
IF EXISTS (SELECT * FROM B WHERE id=1)
INSERT INTO A
(id, value1, value2)
VALUES (1, 'foo', 'bar')
しかし、それはうまくいきません。どうする?
INSERT INTO A (value1, value2, value3)
SELECT 'foo', 'bar', 'foo' FROM B WHERE ID = 1
ここでの潜在的な問題の 1 つは、条件が複数回満たされた場合、同じ数の行が挿入されるため、それに合わせてクエリを調整しますが、選択の条件が満たされた場合にのみ挿入されます。
このMySQLマニュアルの一部を見てください。SELECTの例が示されていますが、INSERTも同様の方法で機能するのでしょうか?