在重复键2唯一列上

时间:2016-01-17 03:56:21

标签: python mysql mysql-python

如果已经输入了同一行中的两列,我尝试更新一行中的值。在下面的代码中,student_id和practice_test_id必须是唯一的,以便更新其余数据。例如,如果(student_id,practice_test_id)=(1,1)的值以及当我尝试将新数据插入到我的表中并且(student_id,practice_test_id)的新行也是(1,1)时,它只是更新之前的值行。但是,如果(student_id,practice_test_id)是(1,2)或(2,1)它将不会更新并且它将创建一个新行,实质上只有当两个字段同时已经输入到表中时才更新。这是我当前插入数据的代码,但我想知道当条目中的两个字段匹配时,我将如何使用ON DUPLICATE KEY UPDATE来更新数据。非常感谢你的帮助!!

INSERT INTO test_results 
(student_id, practice_test_id, section_1_score, 
 section_1_missed, section_2_score, section_2_missed) 
VALUES (%s, %s, %s, %s, %s, %s)

1 个答案:

答案 0 :(得分:1)

首先(student_id,practice_test_id)需要是主键或唯一键。然后,您可以执行以下操作:

insert into test_results
(student_id, practice_test_id, section_1_score, 
 section_1_missed, section_2_score, section_2_missed) 
VALUES (%s, %s, %s, %s, %s, %s)
on duplicate key update section_1_score=values(section_1_score),
  section_1_missed=values(section_1_missed), 
  section_2_score=values(section_2_score),
  section_2_missed=values(section_2_missed)