Вам не нужно использовать VALUES
часть для вставки в этих случаях:
INSERT INTO Person (FirstName, LastName) Values (Select fn.Name, ln.Name from FirstName as fn cross join LastName as ln)
Следующая SQL должно работать: (Этот код фактически не работает - см. Ниже обновление)
INSERT INTO Person
SELECT
FirstName = fn.Name,
LastName = ln.Name
FROM FirstName AS fn
CROSS JOIN LastName AS ln
При использовании SELECT
оператора для вставки значения не нужно использовать синтаксис INSERT INTO tableName (...CSV of column names...) VALUES (... CSV of values ...)
, который предназначен для вставки в явном виде определяется (Также не совсем точно - см ниже обновление):
INSERT INTO Person
(FirstName, LastName)
VALUES
('John','Smith')
,('Jane','Doe')`
Update & код коррекции из-за комментариев добавил Стюарт Эйнсворт:
следующий код был обновлен из-за полученных замечаний, я KEP t приведенный выше код тот же для справки (о том, как это не делать!) и держать комментарии релевантными, однако следует отметить, что, как указано и продемонстрировано в скрипте SQL, предыдущий код не будет работать.
В примере, который будет работать, используется шаблон INSERT INSERT INTO (... CSV of values ...) SELECT ... FROM ... etc...
. В отличие от ранее указанных, определение столбцов как с INSERT INTO (... CSV of values ...)
НЕ предназначено для явных введений и может использоваться с оператором select. (Ниже также теперь почти так же, как и принятый ответ выше.)
INSERT INTO Person
(FirstName, LastName)
SELECT
fn.Name
,ln.Name
FROM FirstName AS fn
CROSS JOIN LastName AS ln
Ваше предложение будет работать, если предположить, что таблица PERSON имеет только два столбца, которые находятся в том же порядке, что и ЗЕЬЕСТ (имя, Фамилия). Идеальным решением было бы указать имена столбцов как часть предложения INSERT. –
Возможно, вы правы, но по моему опыту, потому что имена столбцов были явно определены, например. 'FirstName = fn.Name', если нет других полей, которые необходимы, чтобы они успешно работали. (Хотя справедливости ради, если есть другие поля, которые требуются, любое из вышеуказанных решений не будет работать) – talegna
http://sqlfiddle.com/#!3/b6389/10 –