我想在一个表中替换为cust_id是主键,但我不想修改日期字段。因此,此表上的正常插入看起来像:
REPLACE INTO emails(cust_id, email, date)
VALUES(55, 'email@email.com', '2011-08-07 00:00');
现在,无需修改日期字段,它将是:
REPLACE INTO emails(cust_id, email, date)
VALUES(55, 'email@email.com', date.value?);
但我如何准确保留日期值?
答案 0 :(得分:5)
简短的回答,你不能保持这样的日期。来自Mysql documentation
所有列的值都取自中指定的值 REPLACE声明。任何缺少的列都设置为默认值 值,就像INSERT一样。 您无法引用来自的值 当前行并在新行中使用它们
也许您想要使用http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html。
答案 1 :(得分:2)
insert ignore
将跳过插入
如果您需要更新某些字段,
你可以做到
insert into some_table values (...)
on duplicate update email=?;