使用UPDATE查询“子查询返回的值超过1”

时间:2013-01-17 11:52:21

标签: sql-server-2008 tsql

您好我写这个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)

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

  

Msg 512,Level 16,State 1,Line 1 Subquery返回的值超过1   值。当子查询遵循=,!=,<,< =,

时,不允许这样做      
    

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

  

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

先谢谢

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

运行

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将始终相同,则更改为此将为您解决:

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

答案 2 :(得分:0)

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