Конечно вы можете.
Однако следует отметить одну вещь: INSERT INTO SELECT
оператор копирует данные из одной таблицы и вставляет их в другую таблицу И требует соответствия типов данных в исходной и целевой таблицах. Если типы данных из заданных столбцов таблицы не совпадают (т.е. пытаются вставить VARCHAR
в INT
или TINYINT
в INT
), сервер MySQL выдает SQL Error (1366)
.
Так что будьте осторожны.
Вот синтаксис команды:
INSERT INTO table2 (column1, column2, column3)
SELECT column1, column2, column3 FROM table1
WHERE condition;
Примечание: существует способ обойти проблему вставки разных типов столбцов, используя приведение в вашем SELECT
, например:
SELECT CAST('qwerty' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin;
Это преобразование ( CAST()
является синонимом CONVERT()
) очень полезно, если у ваших таблиц разные наборы символов в одном и том же столбце таблицы (что может привести к потере данных при неправильной обработке).