Я хотел бы вставить идентификатор из таблицы 1 один за другим в таблицу 2, в которой все остальные значения были бы статическими.
Использовать статические значения как часть запроса SELECT
с Table1
INSERT INTO Table2
SELECT 1, 'Orange', ID FROM Table1
Это работает, пока столбцы совпадают. Иногда столбцы не совсем одинаковы, и у вас не будет значений для всего в Table2
. В этом случае вы все равно можете указать список столбцов;трюк не использует ключевое слово VALUES
.
INSERT INTO Table2
(ID, Table1ID)
SELECT 0, ID FROM Table1
Теперь поле Name
в Table2
будет заканчиваться NULL
в каждой новой строке.
НаконецВозможно, вы захотите создать последовательные значения идентификатора «1,2,3» из данных примера. Есть два способа сделать это.
Первый способ - если это поле является полем identity в Table2
. В этом случае вообще ничего не используйте для нового столбца ID:
INSERT INTO Table2
(Name, Table1ID)
SELECT 'Orange', ID FROM Table1
Другой вариант - использование функции row_number()
:
INSERT INTO Table2
SELECT row_number() over (ORDER BY ID), 'Orange', ID FROM Table1