0

我有一个名为“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'

我确信这是糟糕的代码。但我找不到更好的解决方案。

4

1 回答 1

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
于 2013-04-08T15:10:09.637 回答