子查询返回的值超过1个。 SQL错误
问题描述:
这是我有它的错误。所以我不知道要做什么。请帮帮我。子查询返回的值超过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)
答
这意味着,子查询返回这是不允许的多行。你可以写你UPDATE
语句:
UPDATE k
SET k.Xuat = (SELECT SUM(p.SL) FROM PhieuXuat p WHERE p.MaVT = k.MaVT)
FROM Kho k
注意子查询中添加WHERE
条款。我还删除了JOIN
以防止在同一行上进行多次更新。
+0
谢谢你的帮助! –
答
错误是因为您的内部查询返回多个行。 您可以尝试对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
谢谢!帮助。 –
非常感谢。它是很大的! –
请接受您认为对您最有帮助的答案。 –