0

「Temp_main」という別のテーブルから値を取得する「RESULT」という次のテーブルがあります

「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