2013-06-23 2 views
21

테이블에서 값을 업데이트하려고하지만 일부 조건을 추가해야합니다. 나는 CASE 함수를 찾았지만 그것이 최선의 방법이라면 나는 아니다.MySql의 조건부 업데이트

SELECT * 
    FROM realtion 
WHERE (userid1 = 3 AND userid2 = 4) 
    OR (userid1 = 4 AND userid2 = 3); 

출력 :

내 표는 예를 들어 '관계'

 
userid1|userid2|name1|name2 

내가 예를 들어있어입니다 : 여기 은 예입니다

  
4|3|bill|jack 

과 내가 원하는 3과 4 사이의 관계에서 사용자 3의 이름을 변경하지만 그것이 userid1인지 나는 모른다. 또는 userid2.

나는 경우

UPDATE relation 
    CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END 
     WHEN userid2 = 3 THEN SET name2 = 'jack' END 
WHERE (userid1 = 3 AND userid2 = 4) 
    OR (userid1 = 4 AND userid2 = 3); 

의 생각하지만 그것은 작동하지 않습니다! 어떤 아이디어? 미리 감사드립니다.

답변

34

는 불행하게도 당신이 결국 얻기 위해 원하는 것을 매우 분명하지 않다, 그러나 여기 당신이 제대로 UPDATE

UPDATE relation 
    SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END, 
     name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END 
WHERE (userid1 = 3 AND userid2 = 4) 
    OR (userid1 = 4 AND userid2 = 3); 
여기

입니다 SQLFiddle 데모 조건 SET을 사용할 수있는 방법이다.

+0

도움을 주셔서 감사합니다. 지금 바로 테스트하고 있습니다. 연락 드리겠습니다. 추신 : 귀하의 formating 개선을 보았습니다 나는 더 많은 게시물을 염두에두고 이것을 지킬 것입니다 –

+0

정말 고마워요. 그것은 작동합니다. –

+0

@PierreLebon 당신은 매우 환영합니다 :) – peterm