【发布时间】:2014-12-30 13:10:32
【问题描述】:
如果组合(poll_id、user_id、question_id)不存在,我想将值插入表中,否则我想更新列答案。
表格如下:
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 添加唯一索引 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 |用户 ID |问题ID |回答
1 | 1 | 1 |用户 1
1 | 2 | 1 |用户 2
我怎样才能达到最终结果?
【问题讨论】:
-
您必须在其中有另一个唯一索引。您可以将
SHOW CREATE TABLE poll_results的输出添加到您的问题中吗? -
当我用phpMyAdmin直接在MySQL中运行代码时,插入了两条记录。您是否也在 phpMyAdmin 中执行代码?
-
@tadman 不知道那个命令。运行 SHOW CREATE TABLE 查询后,发现我实际上在 poll_id 上有另一个唯一键。在我删除唯一索引后它工作正常!
-
在为这类事情构建测试数据时,您应该使用
1,2,3和1,3,4,因为您会注意到那里的混淆,最后给您1,2,4。跨度>
标签: mysql database sql-update sql-insert