如果已经输入了同一行中的两列,我尝试更新一行中的值。在下面的代码中,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)
答案 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)