2013-06-23 36 views
21

Değerleri bir tablodan güncelleştirmeye çalışıyorum ancak bazı koşulların eklenmesi gerekiyor. CASE işlevini buldum ama en iyi yöntem değilse ben değilim.MySql içinde koşullu UPDATE

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

Çıktı:

Benim masa örneğin 'ilişkisi'

 
userid1|userid2|name1|name2 

Ben mesela var içindir: Burada bir örnek

  
4|3|bill|jack 

ve ben istiyorum 3 ve 4 arasındaki ilişkinin 3 kullanıcı adını değiştirmek ama ben userid1 olup olmadığını bilmiyorum veya userid2.

Ben durumda

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); 

ait olsa Ama çalışmıyor! Herhangi bir fikir? Şimdiden çok teşekkürler.

cevap

34

Ne yazık ki sonuna geçmek istediğini çok net değil, ama burada doğru bir şekilde 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); 
İşte

olduğunu SQLFiddle demo koşullu SET kullanabilirsiniz nasıl.

+0

Yardımlarınız için çok teşekkürler, şu anda test ediyorum, sizi iletişim halinde tutarım. PS: Ben senin biçimlendirme iyileştirme gördüm Daha fazla mesaj için akılda tutulacaktır –

+0

Çok teşekkürler. İşe yarıyor. –

+0

@PierreLebon Çok hoş geldiniz :) – peterm