2014-11-03 58 views
1

我有一個問題,如果組合(poll_id,user_id,question_id)不存在,我想要插入值到一個表中,否則我想更新列答案。插入表或更新如果存在多個唯一索引(MySQL)

表如下:

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);

當我運行下面的查詢時,它將首先插入第一個值集,然後用來自第二個值集的值更新答案字段。 (1,1,'User 1'),(1,2,1,'User 2')ON DUPLICATE KEY UPDATE answer = VALUES(1,1,'User 1')答案)

我看到的是:

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

你必須在那裏有另一個唯一的索引。你可以將'SHOW CREATE TABLE poll_results'的輸出添加到你的問題中嗎? – tadman 2014-11-03 19:44:34

+0

當我用phpMyAdmin直接在MySQL中運行代碼時,插入了兩條記錄。你是否也在phpMyAdmin中執行代碼? – Barry 2014-11-03 19:46:25

+0

@tadman不知道那個命令。發現在運行SHOW CREATE TABLE查詢後,我實際上在poll_id上有另一個唯一鍵。我刪除了獨特的索引後,它工作正常! – Wesley 2014-11-03 19:56:04

回答

1

ON DUPLICATE KEY功能的工作方式是觸發任何UNIQUE類型索引,而不僅僅是您打算觸發的那個索引。

刪除任何可能干擾這個的索引,你應該沒問題。

+0

在我的情況下,這是問題所在。我不知道我有其他指定的唯一索引。再次感謝! – Wesley 2014-11-04 21:15:31

相關問題