繁体   English   中英

最佳做法是更新一行(如果存在),否则插入[重复]

Best practice to update a row if exists otherwise insert [duplicate]

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这个问题已经在这里有了答案:

我想知道一种更新表中行的更有效方法,如果不存在该行,则必须将其插入。

我的查询是

UPDATE MyGuests SET lastname='Doe' WHERE id=2

运行此查询并且没有id = 2的行时,必须像

INSERT INTO MyGuests (lastname, id)
VALUES ('Doe', 2)

注意:

  1. 我的主要目的是更新行

  2. 我不希望在更新行时更改主键。

2 个回复

假设id是您的主键/唯一键,则可以使用INSERT..ON DUPLICATE KEY UPDATE

INSERT INTO MyGuests (id, lastname) VALUES (2, 'Doe')
  ON DUPLICATE KEY UPDATE lastname = 'Doe'

您可以这样引用:

UPDATE MyGuests SET lastname='Doe' WHERE id=2
IF ROW_COUNT()=0
    INSERT INTO MyGuests (lastname, id) VALUES ('Doe',2)
1 如何插入一行,但重复 而是更新它?

我有一个表格,其中包含游戏用户所拥有的物品。 如果用户购买了新商品,则应插入新商品,但如果已经购买,则应增加新商品。 我知道我可以使用INSERT ... ON DUPLICATE KEY UPDATE ,但是我不明白我的问题。 item_id并非唯一,因为许多玩家可以拥有相同的武 ...

3 最佳做法:在插入项目列表之前检查重复的行

我有一个要输入数据库的对象数组。 我的方法调用看起来像这样。 数据库表类似于此 我要插入的数据与此类似。 因此,我想在数据库中检查这三行,然后再将它们添加到数据库中。 我可以做类似的事情,但是我认为这会导致数据库的一些额外行程。 那么,我该如何更优雅地 ...

5 Cassandra最佳做法是覆盖/更新行?

我们计划将Cassandra 3.1用作我们的数据存储。 数据模型将使用user_uuid作为分区键/主键,而没有聚类键。 查询模式是访问特定用户的user_uuid并使用各种数据更新该行。 目的不是简单地添加更多列,而是完全覆盖值/列。 时间戳,版本以及用户的其他各个方面。 预期每天 ...

6 插入或更新(如果存在)行

我正在使用类似于此的mysql约定输入表单信息 我目前有一个PHP脚本,它将通过所有表单字段的foreach循环,并首先检查它是否存在,如果计数大于0,则它将更新该字段。 如果不存在,则插入行。 不幸的是,我试图通过PHP脚本处理一百多个字段,这种方法被证明非常耗时。 什么是更快的 ...

2014-03-03 21:52:03 1 96   php/ mysql
9 插入还是忽略更新上一行?

我有下表 我正在尝试是否有具有相同电子邮件ID的新记录 。 我想在单个查询中使用该emailId更新以前的记录。 我不想用重复的记录更新记录。 我为此使用插入忽略。 有什么帮助吗? ...

2017-02-02 06:33:02 1 46   php/ mysql
10 如果存在则更新行[重复]

这个问题在这里已经有了答案: 插入 MySQL 表或更新(如果存在) (11 个回答) 4年前关闭。 在我的 ...

2017-01-08 14:53:18 2 634   php/ mysql
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM