我有一個數據MySQL的更新與單個SQL多個表來獲得總和(數量)
CREATE TABLE `MASTER` (
`NAME` VARCHAR(10) NOT NULL,
`QTY` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`NAME`)
);
NAME | QTY
----------
'ABC' | 0
'XYZ' | 0
CREATE TABLE `DETAIL` (
`NAME` VARCHAR(10) NOT NULL,
`QTY` INT(10) UNSIGNED NOT NULL,
`FLAG` TINYINT(1) UNSIGNED NOT NULL
);
NAME | QTY| FLAG
--------------------
'ABC' | 10 | 0
'ABC' | 20 | 0
'PQR' | 15 | 0
'PQR' | 25 | 0
我想更新總和(detail.qty)掌握兩個表,並設置其標誌爲1 ,所以我已經寫了查詢
UPDATE MASTER M, DETAIL D
SET M.QTY = M.QTY + D.QTY,
D.FLAG =1
WHERE M.NAME = D.NAME;
我有guesed MASTER.QTY應該是從細節表30(10 + 20)。 但它只更新第一個值 實際值是MASTER.QTY = 10(只從表中更新第一個值)
我怎樣才能獲得MASTER.QTY = 30?
多少行你期望在DETAIL表中有嗎? – DanFromGermany
我同意主表可能是不必要的(這可能是一個視圖)。但是你的另一張桌子需要PK – Strawberry