2016-04-25 113 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

謝謝!幫助。 –