Для каждого user_name
в user_roles
, который соответствует user_name
в users
, вместо NULL
в user_roles
* должен быть установлен конкретный
user_id
. 1011 * Вы можете использовать коррелированный подзапрос:
update user_roles r
set r.user_id = (
select u.user_id from users u where u.user_name = r.user_name
)
Предполагается, что user_name
s уникальны в users
. Если нет, то вам потребуется некоторая агрегация или фильтрация, чтобы подзапрос возвратил только одну запись. Например, он выберет младшие user_id
из соответствующих user_name
s:
update user_roles r
set r.user_id = (
select min(u.user_id) from users u where u.user_name = r.user_name
)
В SQL Server синтаксис немного отличается:
update r
set r.user_id = (select min(u.user_id) from users u where u.user_name = r.user_name)
from user_roles r