我有一个名为'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'
我确信这是糟糕的代码。但我无法得到更好的解决方案。
答案 0 :(得分:1)
你错过了SQL的END
INSERT INTO result(studentName,subjectName,result)
SELECT StudentName,SubjectName,result
FROM temp_main
ON DUPLICATE KEY UPDATE result.result = CASE WHEN result.result = 'Pass' THEN 'Pass' ELSE VALUES(result.result) END