当前位置: 首页 > 面试题库 >

如果存在更新,则在一个查询中插入

张通
2023-03-14
问题内容

我有这样的简单表:

+----------+---------------+-------------+
| ID (int) | KEY (varchar) | VALUE (int) |
+----------+---------------+-------------+
|        1 | asdf          |         100 |
|        2 | fdsa          |         321 |
|        3 | ecda          |         211 |
+----------+---------------+-------------+

我想更新哪里的行,KEY = 'something'但是如果没有行KEY = 'something'我想INSERT更新的行:

+----------+---------------+-------------+
| ID (int) | KEY (varchar) | VALUE (int) |
+----------+---------------+-------------+
|        1 | asdf          |         100 |
|        2 | fdsa          |         321 |
|        3 | ecda          |         211 |
|        4 | something     |         200 |
+----------+---------------+-------------+

仅可能进行一次查询吗?


问题答案:

你可以利用 ON DUPLICATE KEY UPDATE

INSERT INTO yourtable (`id`, `key`, `value`) VALUES (4, 'something', 200)
ON DUPLICATE KEY UPDATE `value` = 200;

key 列上应该有UNIQUE索引

SQLFiddle



 类似资料:
  • 问题内容: 我有一个带有2个表的数据库,如下所示: 列是,并且是 和 在申请表中,我有2个编辑框,名称分别为和 如果用户像电子邮件一样插入一个新的负责人姓名, 那么在保存表格的过程中,我想将新的负责人姓名插入表中,请插入最后一个并将其更新为。 如果用户保持名称,但它更新电子邮件一样,然后我想在从1 =使用新的电子邮件地址和他们(其余和)保持不变。 如果负责人的名称相同,我想保留from表的原始引用

  • 我想修改MongoDB中的文档。以下是相关文档结构的示例摘录: 首先,key包含一个数组数组。我必须搜索嵌套数组中的项(纪元时间,例如)。如何通过嵌套数组值查找文档?例如,我尝试搜索: 诚然,我预计这种方法将通过嵌套数组值进行搜索 其次,如果这个数组值已经存在(纪元时间),我想更新/覆盖嵌套数组中的元素(数据值)。如果数组值在M1数组中不存在,我想将其(以及随附的数据值)添加到M1数组中。 我希望

  • 问题内容: 我有一个字段为Foreign_key_id的表| value1 | value2,如果我有对Foreign_key_id和value1的匹配项,我想更新value2。 如果foreign_key_id或value1不存在,我想插入一个新行。有没有比PHP使用select语句然后分支到更新或插入更好的方法呢? 编辑:value2可以与数据库中的值相同,因此我无法运行和更新,请查看受影响的

  • 问题内容: 如果给定的文件名已经在数据库中,我想在表中进行更新,否则我想插入新行。我尝试此代码,但显示的错误请给我正确的方式,因为我在SQL中更新鲜 问题答案: 你应该 在查询中使用 参数 - 总是! - 没有例外 创建一个处理 服务器上零件的单个查询 __ 使用公认的ADO.NET最佳实践将事物放入块等。 试试下面的代码:

  • 问题内容: 我希望使用以下update \ insert方法来加快我的应用程序insert \ updates的速度: 我将如何使用sql参数来做到这一点?由于@@,将把rowcount函数作为参数。 http://blogs.msdn.com/b/miah/archive/2008/02/17/sql-if-exists-update-else- insert.aspx 问题答案: 这种模式称为

  • 问题内容: 我有一些看起来像这样的代码。我必须保留表中的一个自动递增字段(在其他表中使用)。我想简化和优化此代码。 编辑:主键ID是自动递增的字段。我永远都不想改变。但是,当另一个字段重复时,这就是我要更新该记录的时间。 问题答案: 如何替换成: 假设col1是您的主键,如果已经存在一个值为’foo’的行,它将更新其他两列。否则,它将插入新行。