2012-08-28 43 views
2

我想要實現更新數據:我有產品和數量...如果產品已在數據庫中,我需要用舊數量加新數量過期的數量 示例:我已經有3個蘋果了,我想再插入2個蘋果。結果應該是productname = apple和quantity = 5。對不起,我的英語不好,希望我的問題清楚。在MySQL中插入或重複表

INSERT INTO table1 (productname, quantity) VALUES (’apple’, ‘2’) 
ON DUPLICATE KEY UPDATE ptoductname; // <-- not sure 

請大家幫忙!

+0

您尚未在更新中指定任何操作... –

+0

是數量varchar或其他字符串字段?這可能會成爲一個問題。 – jrdn

回答

7

假設quantity是數值數據類型和productname要麼是PRIMARY KEY或具有UNIQUE KEY約束這將被違反,可以使用ON DUPLICATE KEY UPDATE quantity = quantity + 2

INSERT INTO table1 (productname, quantity) VALUES ('apple', 2) 
    ON DUPLICATE KEY UPDATE quantity = quantity + 2 

在沒有約束強制執行的唯一性,所述ON DUPLICATE KEY子句不會有任何效果,你會結束兩行。

注意:我用正確的單引號'替換了卷積撇號

+0

你也可以把它寫成'ON DUPLICATE KEY UPDATE數量=數量+ VALUES(數量)' –

+0

嗨,其實我收到了兩個蘋果原料......一個3和蘋果2其他原料......但我想只有一個Raw with Apple 5 ... –

+0

@SergiuCostas'productname'是定義爲主鍵還是唯一鍵?如果不是,那麼'INSERT'語句不會因重複密鑰違規而失敗。您必須將其定義爲PK或在其上放置唯一索引。 –