peshkov
Вариант, который ты описал имеет полное право на жизнь. Но, если код пишется не на разовую обработку БД, а на регулярное выполнение - смотреть ссылку из моего предыдущего поста.
во-первых, теоретически можно использовать REPLACE запрос.
во-вторых, можно сделать так:
update ... set `name` = if(`type` = '$val1', '$key1', if(`type` = '$val2', '$key2', ...)) where `type` in ('$val1', '$val2', ...);