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

存在什么?用户身份?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 回答