【问题标题】:insert on duplicate key update for two values?插入两个值的重复键更新?
【发布时间】:2015-07-07 19:50:14
【问题描述】:

我的save_list 表包含三列:

id, user_id, item_id

查询

INSERT INTO save_list (user_id, item_id) VALUES (?,?)

如果user_iditem_id 都存在,我如何使用INSERT ON DUPLICATE KEY UPDATE 更新行?

工作代码

INSERT INTO save_list (user_id, item_id) VALUES (?,?) ON DUPLICATE KEY UPDATE user_id = ?, item_id = ?

【问题讨论】:

标签: mysql duplicates


【解决方案1】:

在它们之间创建一个唯一的复合键

ALTER TABLE tblName ADD UNIQUE unique_index777 (user_id,item_id);

【讨论】:

  • OK ...添加了它,但我将如何使用它?
  • 添加后,您可以使用INSERT INTO .. ON DUPLICATE KEY UPDATE。我刚刚在here 上给出了答案,它将为您提供文档链接等。
  • $q = $this->db->mysqli->prepare("INSERT INTO save_list (user_id, item_id) VALUES (?,?) ON DUPLICATE KEY UPDATE"); 喜欢这个?
  • @DrewPierce 并不是想从你的回答中抢走风头,但我最近才给出了那个,以至于我脑子里都是新鲜的哈哈。
  • 我没有太多的雷@McAdam331
【解决方案2】:

您需要将这 2 个字段定义为复合键才能使更新生效。

INSERT INTO foo_table(user_id, item_id, description) ft values (a,b,desc)
ON DUPLICATE KEY UPDATE ft.description=desc

应该做的伎俩

【讨论】:

    猜你喜欢
    • 2014-07-09
    • 2014-02-04
    • 2013-08-02
    • 2012-04-21
    • 2021-03-28
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多