Хочу написать об очень полезной возможности 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;




