Как обновить все поля профиля одним запросом, если эти поля являются строками, а не столбцами?

Есть таблицы:
users
[UserId][UserName]

userprofiles
[UserId][Field][Value]
То есть поля профиля пользователя являются не столбцами а строками. Например [UserId] - 1, [Field] - Password, [Value] - qwerty1

MySQL позволяет выполнить вот такой запрос
UPDATE `userprofiles`,`users` SET `Value`='pass',`users`.`UserName`='user2' WHERE `userprofiles`.`UserId`=2 AND `users`.`UserId`=2 AND `Field`='Password'

Такой запрос изменит в таблице users поле UserName, соответствующее UserId 2 на user2 и одновременно изменит в таблице userprofiles пароль пользователя на pass (за это отвечает SET `Value`='pass' и условия (`userprofiles`.`UserId`=2 AND `Field`='Password'). Но как мне изменить все остальные поля в одном запросе? Не хочется писать 10 запросов на 10 полей.
  • Вопрос задан
  • 262 просмотра
Решения вопроса 2
Если ставить цель - сделать в один запрос, то решение есть, на сколько оно приемлемое - не знаю..
UPDATE `userprofiles` SET 
    `Value` =
    CASE `Field`
        WHEN 'Password' THEN 'pass'
        WHEN 'First name' THEN 'Ivan'
        WHEN 'Login' THEN 'SkyFox'
        ELSE `Value`
    END
WHERE `UserId` = 2
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
xSkyFoXx
@xSkyFoXx
Никак. Пишите 10 запросов в транзакцию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы