Подтвердить что ты не робот

Условное ОБНОВЛЕНИЕ в MySql

Я пытаюсь обновить значения из таблицы, но мне нужно добавить некоторые условия. Я нашел функцию CASE, но я не, если это лучший метод. Вот пример:

Моя таблица является, например, отношением

userid1|userid2|name1|name2

Я получил, например:

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

Вывод:

     
4|3|bill|jack

и я хочу изменить имя пользователя 3 в отношении между 3 и 4, но я не знаю, является ли это 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);

Но это не сработает! Есть идеи? Большое спасибо заранее.

4b9b3361

Ответ 1

К сожалению, не совсем понятно, что вы хотите получить в конце, но вот как вы могли бы правильно использовать условный SET в своем 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 демонстрация.