INSERT INTO table SELECT ...;
Вторая форма оператора INSERT содержит оператор SELECT вместо предложения VALUES. Новая запись вставляется в таблицу для каждой строки данных, возвращаемых при выполнении оператора SELECT. Если указан список столбцов, количество столбцов в результате SELECT должно быть таким же, как количество элементов в списке столбцов. В противном случае, если список столбцов не указан, количество столбцов в результате SELECT должно совпадать с количеством столбцов в таблице. Любой оператор SELECT, включая составные операторы SELECT и SELECT с предложениями ORDER BY и / или LIMIT , может использоваться в операторе INSERT этой формы.
Чтобы избежать двусмысленности синтаксического анализа, оператор SELECT всегда должен содержать предложение WHERE, даже если это предложение просто "WHERE true"
Вторая форма оператора INSERT содержит оператор SELECT вместо предложения VALUES. Новая запись вставляется в таблицу для каждой строки данных, возвращаемых при выполнении оператора SELECT. Если указан список столбцов, количество столбцов в результате SELECT должно быть таким же, как количество элементов в списке столбцов. В противном случае, если список столбцов не указан, количество столбцов в результате SELECT должно совпадать с количеством столбцов в таблице. Любой оператор SELECT, включая составные операторы SELECT и SELECT с предложениями ORDER BY и / или LIMIT , может использоваться в операторе INSERT этой формы.
Чтобы избежать двусмысленности синтаксического анализа, оператор SELECT всегда должен содержать предложение WHERE, даже если это предложение просто "WHERE true"