「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'
これはくだらないコードだと確信しています。しかし、私はより良い解決策を得ることができませんでした。