【发布时间】:2011-02-25 04:48:56
【问题描述】:
我目前正在使用 replace into 语句,我有一个独特的字段,如果它发现重复,它将导致它更新而不是插入...
问题是如果它发现重复我无法在几列上更新,它只会擦除很多。
是否有类似的“一个语句”方法,我可以只更新我想要的内容?
我发现了 merge into 但不了解关于使用 table 合并到 table 的第一点
【问题讨论】:
我目前正在使用 replace into 语句,我有一个独特的字段,如果它发现重复,它将导致它更新而不是插入...
问题是如果它发现重复我无法在几列上更新,它只会擦除很多。
是否有类似的“一个语句”方法,我可以只更新我想要的内容?
我发现了 merge into 但不了解关于使用 table 合并到 table 的第一点
【问题讨论】:
您将要使用 INSERT...ON DUPLICATE KEY UPDATE 语法。
http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html
下面的示例将尝试创建包含 id、生日和姓名的记录。如果存在具有 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';
【讨论】: