INSERT … SELECT
В этом случае выходные столбцы оператора SELECT
, должны предоставить значения для каждого целевого столбца в списке столбцов, в том же порядке и совместимого типа.Если список столбцов отсутствует, то значения должны быть предоставлены для каждого столбца таблицы или представления (исключая вычисляемые столбцы).
INSERT … SELECT
INSERT INTO cars (make, model, byyear)
SELECT make, model, byyear
FROM new_cars;
INSERT INTO cars
SELECT *
FROM new_cars;
INSERT INTO Members (number, name)
SELECT number, name
FROM NewMembers
WHERE Accepted = 1
UNION ALL
SELECT number, name
FROM SuspendedMembers
WHERE Vindicated = 1
INSERT INTO numbers(num)
WITH RECURSIVE r(n) AS (
SELECT 1 FROM rdb$database
UNION ALL
SELECT n+1 FROM r where n < 100
)
SELECT n FROM r
Конечно, имена столбцов в таблице источнике необязательно должны быть такими же, как и в таблице приёмнике.
Любой тип оператора SELECT
разрешён, пока его выходные столбцы точно соответствуют столбцам вставки по числу и типу.Типы не должны быть точно такими же, но они должны быть совместимыми по присваиванию.