SQL Update,如果不存在则插入

时间:2014-11-08 01:52:12

标签: mysql insert duplicates

表格布局:

CREATE TABLE gmod_playerdata (
  dataset_id  int(255) NULL AUTO_INCREMENT,
  data_id int(255) NULL,
  option_name  varchar(100) NULL,
  option_value  varchar(100) NULL,
  PRIMARY KEY (dataset_id)
)

我无法知道该行是否已存在。 data_id将始终填充,但可以/将多次出现。

我只需要更新option_name和option_value,而我在运行查询时不知道option_value和option_name是否已经存在。

我已经阅读了很多关于ON DUPLICATE KEY UPDATE的内容,但是我还没有理解它在我的场景中的用途。

1 个答案:

答案 0 :(得分:1)

假设option_valueoption_name的组合是唯一的...

要使on duplicate key update起作用,必须有唯一索引(或主键),所以:

create unique index myidx on gmod_playerdata(option_value, option_name);

创建索引后,此查询将起作用:

insert into gmod_playerdata values (...)
on duplicate key update data_id = values(data_id)

我假设data_id是唯一的另一个真正的列,你要更新它而不是插入一行。如果这不是您想要的,请按照语法调整查询。