使用条件更新 - 重复密钥更新

时间:2013-04-08 15:00:42

标签: mysql sql insert sql-update on-duplicate-key

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

我确信这是糟糕的代码。但我无法得到更好的解决方案。

1 个答案:

答案 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