Sql insert命令歧义

时间:2011-06-20 05:56:44

标签: sql-server insert select-insert

我正在尝试使用像这样的sql命令,但由于某些明显的原因它不起作用。你能告诉我这种命令的出路是什么?

   INSERT INTO ContentToGroup(ContentId,ClassSectionId)  
   VALUES (16, Select ClassSectionId from ClassSectionMaster where ClassId=1)

4 个答案:

答案 0 :(得分:4)

INSERT INTO ContentToGroup (ContentId,ClassSectionId)
Select 16, ClassSectionId
from ClassSectionMaster
where classid = 1

答案 1 :(得分:2)

您不能将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关键字)

答案 2 :(得分:2)

INSERT INTO ContentToGroup(ContentId,ClassSectionId) Select 16, ClassSectionId from ClassSectionMaster where ClassId=1

答案 3 :(得分:1)

首先,在使用嵌套查询时需要删除VALUES。同时尝试在字段名称前面指定表名,以防引起歧义。

INSERT INTO ContentToGroup(ContentId,ClassSectionId) 
    SELECT 16, ClassSectionMaster.ClassSectionId 
    FROM ClassSectionMaster 
    WHERE ClassSectionMaster.ClassId=1