UPDATE/INSERT 基于非唯一键?

UPDATE/INSERT based on non-unique keys?

我有一个 table 包含

id | user | date | data1 | data2 ......

其中 id 是主唯一键。

我正在尝试编写一个查询,如果 userdate 都存在则可以更新,而如果其中一个不存在则可以插入

我想到了 INSERT INTO...ON DUPLICATE KEY...UPDATE 方法,但这需要使用唯一键,我有但没有使用。

处理这个问题的好方法是什么?

唯一有效的选择是使用与 mysql 一起使用的编程语言来实现此 UPSERT,因为 MySQL 需要为 INSERT ... INTOREPLACE.

或者在 userdate 列上添加一个唯一索引,这似乎与您的业务逻辑一致。

根据评论中的讨论,您应该(user, date) 设为唯一键。

这将按预期触发 INSERT INTO ... ON DUPLICATE KEY UPDATE 查询,更新具有匹配 userdate 字段的行,并在未找到匹配项的地方插入新行。