我正在運行這個查詢,它應該從一個表中獲取一個金額的總和,如果它 <= 0,則將另一個表的狀態從 Active 更新為 Deactive。該查詢會更新一些值,但不會更新其他值。我已經隔離了一項觀察,其中有 3 筆付款,總共 0 筆付款不起作用。(123456789)這里會發生什么?我在 Microsoft Access 中使用 sql 查詢。謝謝你。
UPDATE tbl_MASTER INNER JOIN tbl_Payments ON tbl_MASTER.DeviceID = tbl_Payments.DeviceID SET tbl_MASTER.ActiveDeactive = "DeActive"
WHERE tbl_Payments.Amount=(SELECT SUM(tbl_Payments.Amount) <= 0 FROM tbl_Payments) AND tbl__MASTER = '123456789';
uj5u.com熱心網友回復:
老實說,您的查詢并沒有多大意義。如果您有 tbl_Payments.Amount=(SELECT SUM(tbl_Payments.Amount) <= 0 FROM tbl_Payments),則該子查詢將只是匯總表中每條記錄的“金額”,而不管哪個 DeviceID。另外,您正在 tbl_Payments 表中尋找一條記錄,其中 Amount = tbl_Payments 中所有 Amounts 的總和?
我建議您的查詢可能需要更像這樣:
UPDATE tbl_MASTER SET tbl_MASTER.ActiveDeactive = "DeActive"
WHERE (SELECT SUM(tbl_Payments.Amount) FROM tbl_Payments WHERE tbl_Payments.DeviceID = tbl_MASTER.DeviceID) <= 0 AND tbl__MASTER = '123456789';
uj5u.com熱心網友回復:
目前,子查詢不會將特定 ID 與外部查詢相關聯,您也可以<= 0在子查詢的SELECT子句中指定。考慮使用IN條件中的邏輯調整 for 子句,HAVING并使用表別名來區分相同的命名表。
UPDATE tbl_MASTER AS m
INNER JOIN tbl_Payments AS p
ON m.DeviceID = p.DeviceID
SET m.ActiveDeactive = 'DeActive'
WHERE sub_p.DeviceID IN (
SELECT sub_p.DevideID
FROM tbl_Payments AS sub_p
GROUP BY sub_p.DeviceID
HAVING SUM(sub_p.Amount) <= 0
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/490948.html
上一篇:行矩陣并在行矩陣中移動
