子查询返回的值超过1。 SQL错误

时间:2016-04-25 07:15:39

标签: sql-server

这是我的错误。所以我不知道该做什么。请帮帮我。

  

子查询返回的值超过1。这是不允许的   子查询跟随=,!=,<,< =,>,> =或当子查询用作   表达。

UPDATE Kho
/*SET Kho.Xuat = SUM(PhieuXuat.SL)*/
SET Kho.Xuat = (SELECT SUM(PhieuXuat.SL) AS SLuong FROM PhieuXuat group by PhieuXuat.MaVT)
FROM Kho
INNER JOIN PhieuXuat
ON (Kho.MaVT = PhieuXuat.MaVT)

2 个答案:

答案 0 :(得分:2)

这意味着子查询返回了多行,这是不允许的。您可以将UPDATE声明写为:

UPDATE k 
    SET k.Xuat = (SELECT SUM(p.SL) FROM PhieuXuat p WHERE p.MaVT = k.MaVT)
FROM Kho k

请注意子查询中添加的WHERE子句。我还删除了JOIN以防止在同一行上进行多次更新。

答案 1 :(得分:2)

错误是因为您的内部查询返回多行。 您可以尝试对JOIN中的组求和,然后加入此集合以获得正确的结果。

NB:内部查询只会被评估一次。

SocialAuthenticationToken