插入表或更新如果存在多个唯一索引(MySQL)

时间:2014-11-03 19:35:23

标签: mysql database sql-update sql-insert

我遇到了一个问题,如果组合(poll_id,user_id,question_id)不存在,我想将值INSERT到表中,否则我想更新列答案。

表格如下:

poll_results poll_id - int(11)| user_id - int(11)| question_id - int(11)|回答 - varchar(100)

我使用:

将唯一设置为(poll_id,user_id,question_id)

ALTER TABLE poll_results ADD UNIQUE INDEX unique_indexpoll_iduser_idquestion_id);

当我运行以下查询时,它将首先插入第一个值集,然后使用第二个值集中的值更新答案字段。

INSERT INTO poll_results(poll_id,user_id,question_id,answer)VALUES(1,1,1,'User 1'),(1,2,1,'User 2')ON DUPLICATE KEY UPDATE answer = VALUES(answer )

我看到的是:

poll_id - user_id - question_id - 回答

1 | 1 | 1 |用户1

我想看到的是:

poll_id | user_id | question_id |答案

1 | 1 | 1 |用户1

1 | 2 | 1 |用户2

如何实现最终结果?

1 个答案:

答案 0 :(得分:1)

ON DUPLICATE KEY功能的工作方式是触发任何UNIQUE类型索引,而不仅仅是您要触发的索引。

删除任何可能干扰此问题的索引,你应该没问题。