我有一个名为“RESULT”的下表,我从另一个名为“Temp_main”的表中获取值
“RESULT”中的字段如下所示:
StudentName | SujectName | Result
---------------------------------
Adam | Math | Fail
Bob | History | Pass
Catherine | Math | Pass
Dave | Science | Fail
Evan | History | Pass
这里的主键是(StudentName,SubjectName)
我使用以下代码将数据放入表中:
insert into result(studentName,subjectName,result)
select StudentName,SubjectName,result
from temp_main
temp_main 表没有相同的主键,所以当我将数据插入结果表时,会有重复的键值。
假设一个学生多次出现在同一科目的考试中。他所有的尝试都在 temp_main 表上,而只有他最好的结果在 Result 表上。
我正在尝试获取一个ON DUPLICATE KEY UPDATE
代码,当且仅当最新结果为“通过”时更新学生-科目对的结果
我试过
insert into result(studentName,subjectName,result)
select StudentName,SubjectName,result
from temp_main
on duplicate key update result = case when temp_main(result) = 'Pass'
Then result(result)='Pass'
我确信这是糟糕的代码。但我找不到更好的解决方案。