2012-02-19 4 views
3

Update multiple rows in 1 column in MySQL까지 추적하십시오.MySQL에서 2 열의 여러 행을 업데이트하십시오.

2 열의 여러 행을 업데이트하는 가장 효율적인 쿼리는 무엇입니까?

UPDATE example_table SET variable1 = 12 WHERE id=1; 
UPDATE example_table SET variable2 = 'blue' WHERE id=1; 

UPDATE example_table SET variable1 = 42 WHERE id=2; 
UPDATE example_table SET variable2 = 'red' WHERE id=2; 

UPDATE example_table SET variable1 = 32 WHERE id=3; 
UPDATE example_table SET variable2 = 'yellow' WHERE id=3; 

case 사용은 가장 효율적인 것 같다,하지만 난 여러 값을 한 번에 설정되는 그것을 어떻게 할 것인가?

답변

10

당신은 테이블 categories라는 두 개의 열이 display_order하고 여기에 title 당신이 무엇을 할 것입니다 말할 경우 :

UPDATE categories 
SET display_order = CASE id 
    WHEN 1 THEN 32 
    WHEN 2 THEN 33 
    WHEN 3 THEN 34 
END, 
title = CASE id 
    WHEN 1 THEN 'New Title 1' 
    WHEN 2 THEN 'New Title 2' 
    WHEN 3 THEN 'New Title 3' 
END 
WHERE id IN (1,2,3) 
0
이 같은

뭔가 당신이 원하는 것을 할 수있다 :

UPDATE example_table SET variable1 = 42,variable2 = 'red' WHERE id=2; 
+0

감사 Aleroot 같은 ... 비워 둘 수 있지만 당신의 대답은 여러 행을 업데이트 다루지 않는다 , 단지 여러 컬럼. –

2

다시 CASE가 해결책이라고 생각합니다. 아이디어는 각 변수에 대해 별도의 CASE 문을 사용하는 것입니다. 다음과 같음 :

UPDATE `example_table` 
SET `variable1` = (CASE 
    WHEN `id` = 1 THEN 12 
    WHEN `id` = 2 THEN 42 
    WHEN `id` = 3 THEN 32 
    END), 
`variable2` = (CASE 
    WHEN `id` = 1 THEN 'blue' 
    WHEN `id` = 2 THEN 'red' 
    WHEN `id` = 3 THEN 'yellow' 
    END); 

희망 하시겠습니까?

+0

감사합니다 Abhay -이 대답은 잘 작동합니다 :) –

2

일부는 ID ''예 '에이 로그인을 넣을 필요가 없습니다 ID가'당신이

UPDATE example_table 
SET variable1 = (CASE 
    WHEN id = 1 THEN 12 
관련 문제