我有一个包含
的表格id | user | date | data1 | data2 ......
其中id
是主要唯一键。
我正在尝试编写一个可以更新的查询,如果INSERT中存在user
和date
,如果其中任何一个不存在
我想过INSERT INTO ... ON DUPLICATE KEY ... UPDATE方法,但是这需要使用我所拥有但不使用的唯一键。
处理这个问题的好方法是什么?
答案 0 :(得分:2)
根据评论中的讨论,您应使(user, date)
成为唯一的密钥。
这将按预期触发INSERT INTO ... ON DUPLICATE KEY UPDATE
查询,更新匹配user
和date
字段的行,并插入未找到匹配项的新行。
答案 1 :(得分:0)
唯一有效的选择是使用与mysql一起使用的编程语言实现此UPSERT
,因为MySQL需要INSERT ... INTO
和REPLACE
的唯一键。
或者在user
和date
列添加唯一索引,这似乎与您的业务逻辑一致。