【问题标题】:"Subquery returned more than 1 value" with UPDATE query带有 UPDATE 查询的“子查询返回超过 1 个值”
【发布时间】:2013-01-17 11:52:21
【问题描述】:

您好,我编写了这个 sql 查询来更新表。查询是:

Update Product Set MakeId = (Select Distinct v.Id from VehicleCompany v, Car_Window c, product p Where p.ProductSKU = c.mf_part_no
AND c.make = v.Name
Group By v.Id)

但每当我运行此查询时,它都会出现以下错误:

消息 512,级别 16,状态 1,第 1 行子查询返回超过 1 个 价值。当子查询跟随 =、!=、 时,这是不允许的

、>= 或当子查询用作表达式时。

我可以知道我在哪里犯错了吗?

提前致谢

【问题讨论】:

    标签: sql-server-2008 tsql


    【解决方案1】:

    您的Select Distinct 可以返回多个值。要将值分配给 MakeId,您的子查询必须只返回 1 个值。

    【讨论】:

      【解决方案2】:

      我不确定这是否是您想要的。你可以写(Select Top 1 ...)

      【讨论】:

        【解决方案3】:

        运行

        Select Distinct v.Id
        from VehicleCompany v, Car_Window c, product p
        Where p.ProductSKU = c.mf_part_no
        AND c.make = v.Name
        

        您应该看到它带回了超过 1 行,您需要修复这部分查询

        如果您确信 ID 将始终保持不变,则更改此 ID 将为您解决问题:

        Select top 1 Distinct v.Id from VehicleCompany v, Car_Window c, product p
        Where p.ProductSKU = c.mf_part_no
        AND c.make = v.Name
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-08
          • 1970-01-01
          相关资源
          最近更新 更多