我遇到了一个问题,如果组合(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_index
(poll_id
,user_id
,question_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
如何实现最终结果?
答案 0 :(得分:1)
ON DUPLICATE KEY
功能的工作方式是触发任何UNIQUE
类型索引,而不仅仅是您要触发的索引。
删除任何可能干扰此问题的索引,你应该没问题。