zaLinux.ru

Как в MySQL результаты запроса сохранить в новую таблицу


В 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», как это показано выше.

Полезные ссылки:


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *