2016-04-25 211 views
0

这是我有它的错误。所以我不知道要做什么。请帮帮我。子查询返回的值超过1个。 SQL错误

子查询返回的值超过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) 
+0

非常感谢。它是很大的! –

+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以防止在同一行上进行多次更新。

+0

谢谢你的帮助! –

2

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

注意:内部查询将只评估一次。

UPDATE Kho 
/*SET Kho.Xuat = SUM(PhieuXuat.SL)*/ 
SET Kho.Xuat = sumSL 
FROM Kho 
INNER JOIN 
(SELECT SUM(PhieuXuat.SL) as sumSL,PhieuXuat.MaVT FROM PhieuXuat group by PhieuXuat.MaVT)P 
ON (Kho.MaVT = P.MaVT) 
+0

谢谢!帮助。 –

相关问题