SQL INSERT на основе результатов SELECT
Простите меня, поскольку я относительно новичок в SQL. Но я пытаюсь использовать измененные данные из запроса SELECT в одной таблице и использовать его для заполнения данных в другую таблицу.
SELECT ID FROM TABLE WHERE VALUE=10
Я хочу вставить результирующий идентификатор в другую таблицу, но с изменениями, такими как:
1stString.ID.2ndString
Я нашел ответы на вопрос о том, как использовать ID из SELECT во вставке, но я не могу заставить его работать, когда пытаюсь конкатенатировать. Существуют и другие значения, которые я вставляю, но они являются литералами (я пытаюсь инициализировать параметры ключа по умолчанию для идентификатора, указанного в другой таблице.
Использование MS SQL Studio 2008, кстати.
Ответы
Ответ 1
INSERT INTO table (field)
SELECT '1stString.' + cast(id as varchar(50)) + '.2ndString'
FROM table2
WHERE id = 10
Изменить - ответ на комментарий:
Вы на правильном пути, но вы хотите выбрать свои жестко закодированные строки из своей таблицы, например:
INSERT INTO table1 (field1, field2, field3)
SELECT '1stVal', '2ndVal', '1stString.' + cast(id as varchar(50)) + '.2ndString'
FROM table2
WHERE id = 10
Это также показано в ответе Дастина Лейна.
Ответ 2
INSERT table1
(
f1, f2, f3, f4
)
SELECT f1, f2, f3, 'defaultval' as f4
FROM table2
WHERE value = 1