Условное ОБНОВЛЕНИЕ в 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);
Но это не сработает! Есть идеи? Большое спасибо заранее.
Ответы
Ответ 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 демонстрация.