1

ここに存在する場合はitem_quatityを更新し、そうでない場合は行を挿入します

+----+--------+-----------+---------------+
| id |user_id | item_id   | item_quantity |
+----+--------+-----------+----------------+
|  1 | 16     | 4         | 1             |
|  2 | 5      | 6         | 2             |
+----+--------+-----------+---------------+

INSERT INTO user_items 
SET user_id = 16 ,item_id = 4 , item_quantity = 1 
ON DUPLICATE KEY 
UPDATE item_quantity = item_quantity + '1' ;

OR

    INSERT INTO user_items 
         (user_id,item_id,item_quantity) VALUES ('16','4','1') 
    ON DUPLICATE KEY 
    UPDATE item_quantity= item_quantity + '1' ;

このクエリは常に行を挿入しますが、更新は機能していません???

4

2 に答える 2

4

何が存在しますか?ユーザーID?item_id?または両方user_id, item_id

列にUNIQUE制約を追加すると、user_id,item_id機能します。

ALTER TABLE user_items ADD CONSTRAINT tb_uq UNIQUE (user_id, item_id)

つまり、独自の化合物カラムが必要な場合ですuser_id, item_id

于 2013-03-25T09:37:39.483 に答える
1
insert into user_items (id, user_id ,item_id , item_quantity) values(3,16, 4, 1) 
on duplicate key update item_quantity = item_quantity + 1
于 2013-03-25T09:48:53.543 に答える