В MySQL в одном SQL запросе можно создать новую таблицу и сохранить в неё результаты MySQL запроса (результаты по другой таблице. Либо можно сохранить результаты поиска по таблице в другую, уже существующую таблицу.
Как в MySQL сохранить результаты MySQL запроса в новую таблицу
Используйте следующую конструкцию:
CREATE TABLE new_table SELECT //здесь идёт MySQL запрос (поиск по таблице)
Пример:
CREATE TABLE `db2`.`new_table` SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Обратите внимание, что часть, которая начинается с SELECT, представляет по синтаксису обычный запрос поиска SELECT. То есть вы можете протестировать ваш запрос без создания новой таблицы:
SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
И если он сработал правильно, то добавьте этот запрос после «CREATE TABLE new_table».
Как сохранить результаты MySQL запроса с несколькими столбцами в новую таблицу
Если вы хотите, чтобы в новую таблицу было сохранено несколько столбцов, то перечислите их после SELECT:
CREATE TABLE `db2`.`new_table` SELECT `column1` , `column2` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column1` DESC;
Если вы хотите, чтобы были сохранены все столбцы, то укажите «*»:
CREATE TABLE `db2`.`new_table` SELECT * FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `id` DESC;
Как сохранить результаты MySQL запроса в новую таблицу с PRIMARY KEY
После имени новой таблицы в скобках укажите имя и свойства столбца, который должен стать PRIMARY KEY, например:
CREATE TABLE `db2`.`test` (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)) SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Вам необязательно указывать имена каждого столбца, который составит новую таблицу. Полученные с помощью запроса SELECT данные будут присоединены к таблице справа.
Как указать свойства столбцов при сохранении результатов запроса в новую таблицу
После имени новой таблицы в скобках вы можете указать свойства столбцов, используя синтаксис CREATE TABLE:
CREATE TABLE `db2`.`test` (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), KEY(title)) SELECT `title`, `link` FROM `db1`.`old_table` WHERE `body` LIKE '%search string%' ORDER BY `id` DESC;
Обратите внимание, что если полученные с помощью SELECT имена столбцов не совпадают с именами указанными в CREATE TABLE, то такие столбцы будут присоединены справа.
Как поменять имена столбцов в результатах MySQL запроса, сохраняемых в новую таблицу
С помощью ключевого слова AS вы можете поменять имя одного или нескольких столбцов.
Пример изменения имени одного столбца:
CREATE TABLE `db2`.`test` SELECT `link` AS `megalink` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Пример изменения имени двух столбцов для вставки в создаваемую таблицу:
CREATE TABLE `db2`.`test` SELECT `id` AS `name`, `link` AS `megalink` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Как в MySQL сохранить результаты MySQL запроса в существующую таблицу
Чтобы сохранить результаты запроса в существующую таблицу, используйте конструкцию:
INSERT INTO new_table SELECT //здесь идёт MySQL запрос (поиск по таблице)
Обратите внимание, что если вы не указываете имя столбцов, в который должны быть вставлены данные, то имена выбранных для сохранения столбцов должны совпадать в обеих таблицах.
Пример указания имени столбца в новой таблице для вставки данных:
INSERT INTO tbl_temp2 (fld_id) SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
Либо для изменения имени полей используйте «AS», как это показано выше.
Полезные ссылки:
- https://dev.mysql.com/doc/refman/8.0/en/ansi-diff-select-into-table.html
- https://dev.mysql.com/doc/refman/8.0/en/create-table-select.html
Связанные статьи:
- Ошибка «Failed - Network error» во время экспорта в phpMyAdmin (РЕШЕНО) (100%)
- Как переименовать таблицу в phpMyAdmin и MySQL (100%)
- Как импортировать и экспортировать базы данных в MySQL или MariaDB (56.7%)
- Как установить веб-сервер Apache с PHP 7, MariaDB/MySQL и phpMyAdmin (LAMP) на Ubuntu (56.7%)
- Изучение MySQL / MariaDB для начинающих (56.7%)
- Как переместить директорию с данными MySQL/MariaDB в новое расположение на Ubuntu 16.10 или 17.04 (RANDOM - 56.7%)