Команда INSERT ... SELECT
Команда INSERT ... SELECT используется для вставки
данных в таблицу на основе результата запроса
SELECT.
Позволяет копировать, переносить и трансформировать данные
между таблицами без явного перечисления значений.
Синтаксис
INSERT INTO target_table (column_list)
SELECT column_list FROM source_table WHERE condition
Таблицы для примеров
| id | name | salary | active |
|---|---|---|---|
| 1 | Ivan | 40000 | 1 |
| 2 | Petr | 45000 | 1 |
| 3 | Sergey | 42000 | 0 |
| 4 | Olga | 55000 | 1 |
| id | name | salary |
|---|
Пример
Давайте вставим в архивную таблицу только активных сотрудников из основной таблицы:
INSERT INTO employees_archive (id, name, salary)
SELECT id, name, salary FROM employees WHERE active = 1
Результат выполнения кода:
| id | name | salary |
|---|---|---|
| 1 | Ivan | 40000 |
| 2 | Petr | 45000 |
| 4 | Olga | 55000 |
Пример
Давайте при вставке преобразуем данные, увеличив зарплату на фиксированное значение:
INSERT INTO employees_archive (id, name, salary)
SELECT id, name, salary + 5000 FROM employees
WHERE active = 1
Результат выполнения кода:
| id | name | salary |
|---|---|---|
| 1 | Ivan | 45000 |
| 2 | Petr | 50000 |
| 4 | Olga | 60000 |
Смотрите также
-
команду
INSERT,
которая добавляет записи -
команду
SELECT,
которая формирует источник данных -
команду
WHERE,
которая фильтрует вставляемые строки -
конструкцию
ON DUPLICATE KEY UPDATE,
которая обновляет при конфликте ключа