Как вставить одну таблицу в другую из другой базы данных с отношениями в MySQL? - PullRequest
0 голосов
/ 20 сентября 2019

В моей старой базе данных у меня есть 2 таблицы:

счета

id
dr_no
customer_name
created_at

invoice_items

id
dr_no
item_name
created_at

Это отношения один ко многим.invoice может иметь много invoice_item.Проблема здесь в том, что вместо идентификатора счета-фактуры в качестве ссылки используется dr_no.

Я занимаюсь обновлением системы и хочу перенести старую базу данных в новую ииспользуйте invoice_id в качестве ссылки вместо `dr_no.

Текущая таблица invoices уже содержит 100k записей, и вместо того, чтобы зацикливать ее, вставляя в новую базу данных, я использовал этот код:

INSERT INTO new_db.invoices SELECT * FROM old_db.invoices;

Это делает работу, но чтобы вставить invoice_items, я должен зациклить все invoices, проверить все invoice_items с определенным dr_no и вставить в новую таблицу invoice_items.

Есть ли более эффективный способ сделать это?Я имею в виду, быстрее?Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 20 сентября 2019

Вы можете вставить в новую таблицу invoice_items, используя следующий запрос:

INSERT INTO mew_db.invoice_items
SELECT
    t.id, 
    v.id,         -- invoice_id
    t.item_name,
    t.created_at
FROM old_db.invoice_items t
INNER JOIN old_db.invoices v ON v.dr_no = t.dr_no
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...