【问题标题】:Sql insert command ambiguitysql插入命令歧义
【发布时间】:2011-06-20 05:56:44
【问题描述】:

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

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

【问题讨论】:

    标签: sql-server insert select-insert


    【解决方案1】:
    INSERT INTO ContentToGroup (ContentId,ClassSectionId)
    Select 16, ClassSectionId
    from ClassSectionMaster
    where classid = 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 关键字)

      【讨论】:

        【解决方案3】:
        INSERT INTO ContentToGroup(ContentId,ClassSectionId) Select 16, ClassSectionId from ClassSectionMaster where ClassId=1
        

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

          • 我认为 SO 应该在某处显示“x 人当前正在回答”。因为我们都发布了几乎相同的答案
          猜你喜欢
          • 2022-08-18
          • 2012-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多