2013-06-23 24 views
21

Próbuję UPDATE wartości z tabeli, ale muszę dodać niektóre warunki. Znalazłem funkcję CASE, ale nie jestem, jeśli jest to najlepsza metoda. Oto przykład:Warunkowa aktualizacja w MySql

Moja tabela jest na przykład 'relacja'

 
userid1|userid2|name1|name2 

mam na przykład:

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

wyjściowa:

  
4|3|bill|jack 

i chcę zmienić nazwę użytkownika 3 w relacji między 3 a 4, ale nie wiem, czy jest to userid1 lub userid2.

I choć przypadku

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

Ale to nie działa! Jakieś pomysły? Dziękuję bardzo z góry.

Odpowiedz

34

Niestety to nie jest bardzo jasne, co chcesz dostać w końcu, ale tutaj jest to, jak można poprawnie korzystać z warunkowego SET w 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); 

Oto SQLFiddle demo.

+0

Dziękuję za pomoc, testuję ją teraz, utrzymuję cię w kontakcie. PS: Widziałem twoją poprawę formowania będę o tym pamiętać na dalsze stanowisko –

+0

Bardzo dziękuję. To działa. –

+0

@PierreLebon Serdecznie witamy :) – peterm