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
Другие вопросы по тегам