2
私のデータベースには、カテゴリフィールドが更新され、古い値が削除されていないエントリがいくつかあります。私は、定義した順序で、「最高」のカテゴリ値を持つエントリだけを保持したいと思います。カテゴリ値に優先順位を付けて重複を削除します
入力:
id | degree
=============
1 | Diploma
1 | Bachelors
1 | Masters
2 | Diploma
2 | Bachelors
出力(希望):
id | degree
=============
1 | Masters
2 | Bachelors
は私が以前の値を上書きしようとする試みの最後の「最高」の値でCASEを使用してみましたが、それは動作しません。思惑通り。
SELECT
DISTINCT id,
(CASE
WHEN id = 'Diploma' THEN 'Diploma'
WHEN id = 'Bachelors' THEN 'Bachelors'
WHEN id = 'Masters' THEN 'Masters'
END) as degree
FROM
academic_record
この操作の方法はありますか?
論理を説明できますか?マスターズ>学士>ディプロマを意味すると仮定するのは間違いありませんか? – Mureinik
それは正しいです。論理は、それぞれのケースを順番にチェックしたい場合です。ケースが真であれば、値を設定します。次の場合は値を上書きすることがあります。 (これは最適ではないかもしれませんが、十分です。より良い方法は、値を設定する前にすべてのケースをチェックして、「置き換えられた」値を上書きする必要はありません。) – yunque