我有一個表,其中包含我的遊戲擁有的用戶的項目。如果用戶購買了新物品,則應該插入該物品,但如果他已經購買了物品,則應該增加。我可以使用INSERT ... ON DUPLICATE KEY UPDATE
,但我不明白我的問題。如何插入一行,但重複;更新它呢?
item_id
不是唯一的,因爲許多玩家可以擁有相同的武器(即長劍)。 user_id
也不是唯一的,因爲玩家可以擁有很多物品。
所以,我的問題是如何使查詢UPDATE
,而不是INSERT
如果一行包含user_id
和item_id
已經存在?
根據主鍵約束或表上的任何其他唯一約束/索引來檢測副本。 事情是,這聽起來像你有一個「數量」列。如果您插入一行,您希望數量爲1.如果因爲播放器已經有1而更新,那麼您希望數量遞增...... ON DUP KEY UPDATE只會使現有的行與您相匹配想要插入。你必須按照我的建議去做,或者先找到這一行的主題。我更喜歡我的方式。 – 2009-10-15 22:00:09
順便說一句,我的推理:首先檢查總是需要兩個查詢。嘗試並檢查結果,如果它是dup,則只需要兩個查詢。 – 2009-10-15 22:02:09
對不起,我編輯後刪除了我的評論。好吧,我只是想知道是否有可能只使用一個查詢來做到這一點。 – Phoexo 2009-10-15 22:03:01