我目前正在使用replace into语句,我有一个唯一的字段会导致它更新而不是INSERT,如果它找到重复...
问题是,如果发现重复,我无法在几列上更新,它只是擦除了批次。
是否有类似的“一个声明”方法,我可以更新我想要的内容?
我发现合并但是没有取消关于使用表
合并到表中的第一位答案 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';