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