Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


INSERT SELECT (MySQL)

В MySQL есть замечательная команда INSERT ... SELECT, которая позволяет быстро вставить большое количество записей из одной таблицы в другую.

Исходные данные

Например есть две таблицы auto и car. Таблица auto содержит данные, car — пустая.

Таблица auto

Создаем таблицу auto.

1
2
3
4
5
6
7
8
9
CREATE TABLE `auto` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` CHAR(50) NOT NULL,
    `country` CHAR(50) NOT NULL,
    `site` CHAR(255) NOT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB

Заполняем данными.

1
2
3
INSERT INTO `auto` (`id`, `name`, `country`, `site`) VALUES (1, 'Mercedes-Benz', 'Germany', 'mercedes-benz.de');
INSERT INTO `auto` (`id`, `name`, `country`, `site`) VALUES (2, 'KIA', 'Korea', 'kia.ru');
INSERT INTO `auto` (`id`, `name`, `country`, `site`) VALUES (3, 'Toyota', 'Japan', 'toyota-global.com');

Таблица car

Создаем таблицу car.

1
2
3
4
5
6
7
8
9
CREATE TABLE `car` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` CHAR(50) NOT NULL,
    `country` CHAR(50) NOT NULL,
    `site` CHAR(255) NOT NULL,
    PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

Задача

Необходимо перенести данные из таблицы auto, в таблицу car.

Запрос INSERT SELECT

Перенесем данные из таблицы auto в таблицу car при помощи INSERT ... SELECT

1
2
INSERT INTO `car` (`name`, `country`, `site`)
SELECT `name`, `country`, `site` FROM `auto`

Результат

После выполнения запроса, в таблице car появятся данные.

idnamecountrysite
1Mercedes-BenzGermanymercedes-benz.de
2KIAKoreakia.ru
3ToyotaJapantoyota-global.com

PRIMARY KEY в INSERT SELECT

Чтобы было соответствие по ID можно в запросе указать PRIMARY KEY.

1
2
INSERT INTO `car` (`id`, `name`, `country`, `site`)
SELECT `id`, `name`, `country`, `site` FROM `auto`
Опубликовано: 14 ноября 2013  ·  Автор: Артём Фёдоров  ·  3929 просмотров

Категория

ГлавнаяСУБДMySQLINSERT SELECT (MySQL)

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

MySQL, СУБД

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания