Вставка результатов из таблицы с использованием CTE
Я пытаюсь вставить значения из таблицы, используя CTE, но что-то не работает. Я полагаю, что CTE не работает таким образом?
Может кто-нибудь объяснить мне, что здесь не так, и предложить мне альтернативу, или исправить мой запрос, если я что-то упустил?
WITH t1 AS( SELECT id_sitio as id_sitio FROM Sitio WHERE nombre = 'Insert your site name here')
INSERT INTO Sitio_tipo_equipo (id_sitio, id_tipo_equipo)
VALUES
(t1.id_sitio ,4),
(t1.id_sitio, 6),
(t1.id_sitio, 7),
(t1.id_sitio, 9);
2 ответа
Решение
Я думаю, что это ваше намерение
WITH t1 AS (
SELECT id_sitio
FROM Sitio
WHERE nombre = 'Insert your site name here'
)
INSERT INTO Sitio_tipo_equipo(id_sitio, id_tipo_equipo)
SELECT t1.id_sitio, n.n
FROM t1 CROSS JOIN
(SELECT 4 as n UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 9
) n
Вы обычно не используете CTE с insert . . . values
заявление.
С информацией под рукой...
INSERT INTO Sitio_tipo_equipo (id_sitio, id_tipo_equipo)
SELECT id_sitio,eq.id_tipo_equipo
FROM Sitio
CROSS APPLY (
SELECT 4 [id_tipo_equipo] UNION
SELECT 6 UNION
SELECT 7 UNION
SELECT 9
) eq
WHERE nombre = 'Insert your site name here'
Что бы я сделал, если бы мог правильно угадать структуру вашей базы данных:
INSERT INTO Sitio_tipo_equipo (id_sitio, id_tipo_equipo)
SELECT id_sitio,id_tipo_equipo
FROM Sitio
CROSS APPLY tipo_equipo
WHERE nombre = 'Insert your site name here'
AND id_tipo_equipo IN (4,6,7,9)