#mysql
#mysql
Вопрос:
У меня есть 2 таблицы: роли и roles_backup.
из-за неправильного внутреннего кода значения из поля role
были установлены NULL
равными (только для определенных записей).
что мне нужно выполнить: найти все записи из резервной таблицы, в которой задана роль, чтобы получить их обратно.
каков наилучший метод запроса этого?
я пробовал следующее, но, похоже, это не работает:
SELECT * FROM roles WHERE (role IS NULL OR role='') UNION
SELECT * FROM roles_backup WHERE (role <>'')
Комментарии:
1. Если вы покажете нам несколько методов, мы сможем выбрать лучший
Ответ №1:
Предполагая, что у этих записей есть идентификатор, вы могли бы сделать что-то вроде этого, чтобы восстановить свои роли из таблицы roles_backup:
UPDATE roles
SET role = ( SELECT role FROM roles_backup WHERE id = roles.id )
WHERE role IS NULL
Комментарии:
1. Спасибо! но каким будет фактический запрос для проверки записей в первую очередь?
2. Этот запрос покажет записи, в которых роль равна нулю, из вашей исходной таблицы. В третьем столбце будет показано, что будет использоваться из резервной таблицы.
SELECT roles.id, roles.role, backup_roles.role FROM roles JOIN roles_backup ON roles.id = roles_backup.id WHERE roles.role IS NULL