mysql替换成替代品

时间:2010-05-28 15:41:25

标签: mysql replace

我目前正在使用replace into语句,我有一个唯一的字段会导致它更新而不是INSERT,如果它找到重复...

问题是,如果发现重复,我无法在几列上更新,它只是擦除了批次。

是否有类似的“一个声明”方法,我可以更新我想要的内容?

我发现合并但是没有取消关于使用表

合并到表中的第一位

1 个答案:

答案 0 :(得分:16)

您将要使用INSERT ... ON DUPLICATE KEY UPDATE语法。

http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

这是一个尝试使用id,birthday和name创建记录的示例。如果存在具有id字段的记录,则它将执行指定的更新。该表有许多其他字段,如电子邮件地址,邮政编码等。如果我更新,我想留下这些字段。 (如果我没有将其包含在REPLACE INTO声明中,则REPLACE INTO将丢失任何数据。)

INSERT INTO user (userid,birthday,first_name,last_name) 
   VALUES (1234,'1980-03-07','Joe','Smith') 
ON DUPLICATE KEY UPDATE 
   birthday = '1980-03-07',
   first_name = 'Joe', 
   last_name = 'Smith';