안녕하세요.^^ (DB초보자)
DB 선배님들..... 개인적으로 프로젝트를 구현하다 궁금한게 생겨 질문드립니다. (
*DB구조
*student Table *
id | long | PK
name | STRING |
class | int |
데이터예시)
id | name | class
1 | 홍길동 | null
2 | 코코 | null
3 | 바나나 | null
[1.] Student테이블의 class값을 일괄 업데이트를 하기위해서 다음과같은 쿼리를 날립니다.
update student set class =1; OR
update student set class =1 where id in (1,2,3);
결과는
데이터예시)
id | name | class
1 | 홍길동 | 1
2 | 코코 | 1
3 | 바나나 | 1
하지만 제가원하는건 [1.] Student테이블의 class값을 일괄 업데이트를 하지만 값이 다다르도록 설정하고싶어요.
원하는 결과값
데이터예시)
id | name | class
1 | 홍길동 | 2
2 | 코코 | 4
3 | 바나나 | 10
'쿼리'를 날릴때 '특정값( 홍길동은 '2'반 / 코코는 '4'반 / 바나나는 '10'반 )으로 날려서 일괄업데이트를 하고싶습니다.
어떻게 해야하는지 조언 부탁드립니다.
좋은 하루 보내세요!
참조 대상 집합이 별도로 존재한다면? 조인 업데이트를 이용하는게 좋을 듯 하구요.
임의로 값을 지정해야 한다면? 그냥 각각 업데이트 하는게 좋을 듯 하네요.
-- 1. 각각 Update 하기 UPDATE student SET class = 2 WHERE id = 1; UPDATE student SET class = 4 WHERE id = 2; UPDATE student SET class = 10 WHERE id = 3; -- 2. Case 문으로 값 지정 UPDATE student SET class = CASE id WHEN 1 THEN 2 WHEN 2 THEN 4 WHEN 3 THEN 10 END WHERE id IN (1, 2, 3) ; -- 3. Join Update UPDATE student a INNER JOIN (SELECT 1 id, 2 class UNION ALL SELECT 2, 4 UNION ALL SELECT 3, 10 ) b ON a.id = b.id SET a.class = b.class ;