我在MySQL
数据库中有一个包含以下字段的表:
cid
number
date
code
cid
和number
是关键。
每天使用date
脚本将第一个php
中另一个表中的数据插入此表中。
code
字段在源表中是可更新的,如果在将记录插入目标时代码已更改,我想更新目标表中的现有记录。我的意思是我不想将更新的数据作为新行插入,而是更新当前记录。
我该怎么做?
答案 0 :(得分:4)
您可以使用MySQL的INSERT INTO ... ON DUPLICATE KEY UPDATE
。
为了使其正常工作,您必须设置UNIQUE
索引,以便MySQL产生错误(因为记录存在),然后转移到UPDATE
部分。
在您的情况下,我认为此密钥为UNIQUE(cid, number, date)
。
根据您当前的表格,查询将如下所示:
INSERT INTO your_table_name
(cid, number, date, code)
VALUES
(1, 2, '2016-08-09', 'code')
ON DUPLICATE KEY SET code = 'code';
相应地调整列名称和值。
答案 1 :(得分:-3)
IF EXISTS...
THEN
UPDATE ... SET ....
ELSE
INSERT INTO ...
使用存储过程。