Вставить несколько строк с помощью выбора - PullRequest
15 голосов
/ 20 марта 2011

Я пытаюсь вставить 2 строки в одну таблицу. Первый будет вводить данные из выбора, второй будет использовать переменные для данных. Я могу вставить первую строку, но у меня возникают проблемы при вставке нескольких строк.

$ partner_id - связать строки друг с другом. Для этого я использую сгенерированное значение 32char в php. Есть ли в любом случае установить edit_partner_id с mysql в качестве идентификатора первой вставленной строки, или это невозможно из-за необходимости создания первой строки, прежде чем вы сможете получить последний идентификатор?

Можно ли также добавить обновление к этому или мне придется запускать это в отдельном запросе?

$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)";

Спасибо

1 Ответ

28 голосов
/ 20 марта 2011

Если я правильно понимаю ваш вопрос, когда вы пытаетесь вставить некоторые данные из другой таблицы и некоторые данные, которые вы предоставляете сами, вы сможете сделать что-то подобное, используя UNION:

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

Надеюсь, это поможет ...

...