INSERT INTO如果id不存在,则忽略它是否存在,如果任何字段不同则插入new

时间:2015-09-17 09:54:37

标签: mysql insert-into

我有一张包含人物和地址的表格。这些地址经常被送到数据库并且它们不会改变,但是如果它们这样做,我想保留最后一个地址并添加新地址,并带有时间戳。

此表中没有主键。 person_id是人员表中的关键

  • 如果person_id不存在,请将数据添加到表格
  • 如果person_id存在且详细信息都相同,请忽略
  • 如果person_id存在且任何细节不同,请添加数据。

我在其中尝试了很多东西:

INSERT INTO addresses (person_id,street,zip,timestamp) SELECT ("1","122
Farm", "4422",CURRENT_TIMESTAMP) FROM addresses WHERE NOT EXISTS 
(SELECT person_id,street,zip FROM addresses WHERE person_id = "1" AND 
street = "122 Farm" AND zip = "4422")

谢谢!

1 个答案:

答案 0 :(得分:0)

我刚发现的解决方案是: 1-创建相关字段的唯一索引:

ALTER TABLE addresses ADD UNIQUE INDEX a_uindex (person_id,street,zip)

然后使用:

INSERT IGNORE INTO addresses VALUES ("1","122 Farm","4422", CURRENT_TIMESTAMP)