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

Примеры SQL-запросов для копирования записей из разных таблицы.

К примеру есть две одинаковые по структуре, нужно из таблицы `table_a` скопировать запись с определенными полями в таблицу `table_b`.

INSERT INTO `table_a` (`name`, `alt`, `page`) 
SELECT 
	`name`, 
	`alt`, 
	`page` 
FROM 
	`table_b` 
WHERE 
	`id` = 1
SQL

Копирование нескольких записей:

INSERT INTO `table_a` (`name`, `alt`, `page`) 
SELECT 
	`name`, 
	`alt`, 
	`page` 
FROM 
	`table_b` 
WHERE 
	`id` IN(1,2,3)
SQL

Если таблицы `table_a` и `table_b` полностью одинаковые по структуре, то названия полей можно опустить.

INSERT INTO `table_b` SELECT * FROM `table_a`
SQL

Или указать только нужные поля:

INSERT INTO `table_a` (`name`, `alt`, `page`) 
SELECT 
	`name`, 
	`alt`, 
	`page` 
FROM 
	`table_b` 
SQL

Если таблицы разные по структуре, то можно подогнать названия и значения полей.

INSERT INTO `table_b` (`name`, `alt`, `page`, `module`, `sort`)
SELECT
	`filename` AS `name`,
	'' AS `alt`,
	`page`,	
	'prod' AS `module`,
	1 AS `sort`
FROM
	`table_a`
SQL
INSERT INTO `table_b` (`name`, `alt`, `page`, `module`, `sort`)
SELECT
	(SELECT `name` FROM `table_c` WHERE `item_id` = `table_a`.`id`) AS `name`,
	'' AS `alt`,
	`page`,	
	'prod' AS `module`,
	1 AS `sort`
FROM
	`table_a`
SQL
INSERT INTO `table_b` (`name`, `email`, `address`)  
SELECT * FROM (
	(SELECT `name`, `email`, `address` FROM `table_a`) 
	UNION 
	( SELECT `name`, `email`, `address` FROM `table_c`)
)
SQL
11.02.2022
550

Комментарии

, чтобы добавить комментарий.

Другие публикации

Временные таблицы в MySQL
Временные таблицы используются для хранения промежуточных данных при сложных выборках из БД, например при большом количестве JOIN и UNION запросов.
34103
+2
Сортировка в MySQL
В этой статье приведены примеры использования оператора ORDER BY для сортировки записей в MySQL.
24583
+4
Счетчик просмотров страниц с графиком
Для примера возьмем статейный сайт, на нём нужно сделать счетчик просмотров статей, с выводом результатов за день,...
11314
+16
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
17793
+8
Поиск дубликатов MySQL
Сборник запросов для поиска, изменения и удаления дублей в таблице MySQL по одному и нескольким полям.
103136
+12
Шифрование полей в MySQL
В MySQL есть несколько встроенных функций шифрования. Рассмотрим основные на примерах c использованием PHP PDO.
12504
0