web-dev-qa-db-ja.com

selectを使用して複数の行を挿入します

同じテーブルに2行を挿入しようとしています。 1つ目は選択からデータを入力し、2つ目はデータに変数を使用します。最初の行を挿入できますが、複数の行を挿入できません。

$ Partner_idは、行を相互にリンクするためのものです。このimでは、phpで生成された32char値を使用します。とにかく、挿入された最初の行のIDとしてmysqlを使用してedit_partner_idを設定することはできますか、それとも最後のIDを取得する前に最初の行を作成する必要があるためこれは不可能ですか?

これに更新を追加することも可能ですか、それとも別のクエリでこれを実行する必要がありますか?

$sql = "INSERT INTO edits_customers (customer_id, creator_id, firstname, surname,
            house_no, address_1, address_2, address_3, city, county, postcode,
            country, email, home_tel, mobile_tel, work_tel, notes, edit_type,
            edit_partner_id )
        (SELECT *, 'before', '{$partner_id}' FROM customers WHERE customers.id = 123),
        ('{$var1}', '{$var2}', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
            '', 'after', $partner_id)";

ありがとう

15
arbme

別のテーブルからデータを挿入しようとしている質問と、自分で提供したデータを挿入しようとしている質問を正しく理解している場合は、UNIONを使用して次のようなことができるはずです。

INSERT INTO SomeTable ( Col1, Col2, Col3 )
SELECT Val1, Val2, Val3 FROM SomeOtherTable
UNION
SELECT 'MyProvidedVal1', 'MyProvidedVal2', 'MyProvidedVal3'

お役に立てば幸いです...

28
Eric Tarasoff