首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入时更新MySQL中的现有记录

问插入时更新MySQL中的现有记录
EN

Stack Overflow用户
提问于 2016-08-09 21:35:35
回答 2查看 74关注 0票数 0

我在MySQL数据库中有一个表,其中包含以下字段:

代码语言:javascript
复制
cid
number
date
code

cid和number是密钥。每天都会使用php脚本将来自第一个date的另一个表的数据插入到这个表中。源表中的code字段是可更新的,如果在向目标插入记录时代码发生了变化,我想要更新目标表中的现有记录。我的意思是,我不想将更新后的数据作为新行插入,而是更新当前记录。

我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2016-08-09 22:16:27

您可以使用MySQL的INSERT INTO ... ON DUPLICATE KEY UPDATE来完成此操作。

为此,您必须设置一个UNIQUE索引,以便MySQL生成一个错误(因为存在记录),然后移动到UPDATE部件。

在您的例子中,我假设这个密钥是UNIQUE(cid, number, date)。

给定当前表,查询将如下所示:

代码语言:javascript
复制
INSERT INTO your_table_name 

(cid, number, date, code) 

VALUES 

(1, 2, '2016-08-09', 'code') 

ON DUPLICATE KEY SET code = 'code';

相应地调整列名和值。

Documentation about ON DUPLICATE KEY UPDATE

票数 4
EN

Stack Overflow用户

发布于 2016-08-09 21:47:10

代码语言:javascript
复制
IF EXISTS...
THEN
UPDATE ... SET ....
ELSE 
INSERT INTO ...

使用存储过程。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38852334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档