4

テーブル内の複数のアイテムを送信するクエリがありますa

例えば:

insert into a values(id,name) (5,'john'),(6,'smith');

このIDを持つ他のテーブルから3番目の値も選択する必要がありますが。

例えば:

insert into a values(id,name,money) (5,'john',(select money from b where id=5)),(6,'smith',(select money from b where id=6));

上記の問題は、それが少し反復的であり、サブ選択も使用することです。

を使用してこれを書き直すことは可能かどうか疑問に思いますJOIN(これにより、NULLが挿入されないように、指定されたIDにテーブルbとの関係があることも確認できます)

何か案は?

4

1 に答える 1

4

SELECTそれぞれに1つしか許可されINSERTていないため、一度に複数の値を挿入するのではなく、これを書き直して複数の行を選択する必要があります。INSERT2つの値のセットと?を含む一時テーブルを作成できますJOINか?

CREATE TEMPORARY TABLE _tmp_a (id INT PRIMARY KEY, name VARCHAR(255));
INSERT INTO _tmp_a (5, 'john'), (6, 'smith')
INSERT INTO a (id, name, money) SELECT _tmp_a.id, _tmp_a.name, b.money FROM _tmp_a LEFT JOIN b ON b.id=_tmp_a.id
于 2012-09-07T00:46:16.803 に答える