Sql вставить команду неоднозначность
Я пытаюсь использовать команду sql, как это, но она не работает по некоторым очевидным причинам. Можете ли вы сказать мне, как выход для этого типа команд?
INSERT INTO ContentToGroup(ContentId,ClassSectionId)
VALUES (16, Select ClassSectionId from ClassSectionMaster where ClassId=1)
4 ответа
Решение
INSERT INTO ContentToGroup (ContentId,ClassSectionId)
Select 16, ClassSectionId
from ClassSectionMaster
where classid = 1
Вы не можете смешать INSERT .... VALUES....
с "встроенными" операторами выбора. С использованием VALUES
ключевое слово, вы должны предоставить все значения в виде литералов или переменных SQL.
Либо вам нужно сначала выбрать значение и присвоить его переменной:
DECLARE @ClassSectionID INT
SELECT @ClassSectionID = ClassSectionID
FROM dbo.ClassSectionMaster WHERE ClassId = 1
INSERT INTO ContentToGroup(ContentId,ClassSectionId)
VALUES (16, @ClassSectionID)
или затем используйте SELECT
заявление, которое другие показали, чтобы предоставить все значения (а затем вы опускаете VALUES
ключевое слово)
INSERT INTO ContentToGroup(ContentId,ClassSectionId) Select 16, ClassSectionId from ClassSectionMaster where ClassId=1
Сначала вам нужно удалить ЗНАЧЕНИЯ, когда вы используете вложенный запрос. Также попробуйте указать имена таблиц перед именем поля, если это вызывает вашу неоднозначность.
INSERT INTO ContentToGroup(ContentId,ClassSectionId)
SELECT 16, ClassSectionMaster.ClassSectionId
FROM ClassSectionMaster
WHERE ClassSectionMaster.ClassId=1