Добавление записей MySQL из одной таблицы в другую

Хочу написать об очень полезной возможности MySQL, которая очень помогает в рефакторинге старой БД, точнее в переносе данных из старой БД в новую, имеющую другую структуру. В данном случае нам надо вставить в новую таблицу данные, которые мы выбираем из старой.

Давайте создадим для начала две таблицы:

CREATE database testdb;
USE testdb;

CREATE TABLE table1 (id int(10) auto_increment, fname varchar(20), lname(20), primary key(id));
CREATE TABLE table2 (id int(10) auto_increment, firstname varchar(20), lastname(20), age int, primary key(id));

Теперь добавим немного данных в таблицу для работы:

INSERT INTO table2 (firstname, lastname, age)
 VALUES
 ('Ivan', 'Ivanov', 12),
 ('Petr', 'Petrov', 13),
 ('Alex', 'Kuznetsov', 39),
 ('Vladimir', 'Ivanov', 42)

Теперь мы можем внести во вторую таблицу данные из первой отфильтрованные по WHERE, притом обратите внимание вносятся все данные, которые мы выбираем из второй таблицы, то есть запрос INSERT повторяется для каждой строчки из второй таблицы.

INSERT INTO table1 (fname, lname) SELECT firstname, lastname FROM table2 WHERE age <= 39;

6 thoughts on “Добавление записей MySQL из одной таблицы в другую

  1. Да… А ларчик просто открывался. Примного благодарен, пригодилось.
    Много полезного на сайте нашел. Буду заходить… 🙂

  2. не понимаю зачем создавать таблицу testdb + у Вас ошибка в последнем запросе, написано просто table а не table2 =)

    • Ну testdb это не таблица а база данных, создать таблицы без бд нельзя, а в названии таблицы действительно пропустил 2 (двойку), спасибо.

  3. вопрос: а как обновлять вторую таблицу (новую)
    если запись во второй таблице существует, то обновить
    если не существует, то добавить из первой (старой)

    подскажите

Comments are closed.