表格布局:
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
的内容,但是我还没有理解它在我的场景中的用途。
答案 0 :(得分:1)
假设option_value
和option_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
是唯一的另一个真正的列,你要更新它而不是插入一行。如果这不是您想要的,请按照语法调整查询。