MySQL의 다중 업데이트

in #mysql6 years ago (edited)

한 번에 여러 행을 MySQL에서 업데이트하는 방법이 있을까?

예를 들어 나는 다음과 같은 테이블 구조가 있을 때,

NameidCol1Col2
Row1161
Row2223
Row3395
Row44168

다음의 5가지 쿼리를 하나의 쿼리로 결합하려고 한다면?

UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;

문제 해결!

INSERT ... ON DUPLICATE KEY UPDATE 를 사용해 보자.

예제 :

INSERT INTO table (id,Col1,Col2) VALUES (1,1,1),(2,2,3),(3,9,3),(4,10,12)
ON DUPLICATE KEY UPDATE Col1=VALUES(Col1),Col2=VALUES(Col2);

위 문제에 대한 해결은?

UPDATE table SET Col1 = CASE id 
                          WHEN 1 THEN 1 
                          WHEN 2 THEN 2 
                          WHEN 4 THEN 10 
                          ELSE Col1 
                        END, 
                 Col2 = CASE id 
                          WHEN 3 THEN 3 
                          WHEN 4 THEN 12 
                          ELSE Col2 
                        END
             WHERE id IN (1, 2, 3, 4);

위 방법으로 1개 쿼리로 다중 업데이트를 진행할 수 있다!

Sort:  

@seobangnim, I gave you an upvote on your first post! Please give me a follow and I will give you a follow in return!

Please also take a moment to read this post regarding bad behavior on Steemit.

Thank you!

Coin Marketplace

STEEM 0.22
TRX 0.12
JST 0.029
BTC 66177.69
ETH 3483.33
USDT 1.00
SBD 3.16