Запрос MySQL: поиск значений в резервной таблице

#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