#sql #sql-server #database #join
#sql #sql-сервер #База данных #Присоединиться
Вопрос:
У меня есть таблицы A, B и C.
Я хочу вставить значения UserRoleName в таблицу C в столбец UserRoleName в таблице A для соответствующего идентификатора пользователя. Идентификатор пользователя в таблице A является внешним ключом из таблицы B. UserRoleId — это внешний ключ в таблице B из таблицы C. Как я могу это сделать?
Я попытался использовать этот запрос,
insert into A (UserRoleName)
(
select C.UserRoleName
from C
inner join B on B.UserRoleId = C.UserRoleId
inner join A on A.UserId = B.UserId
)
Но это дает:
Не удается вставить значение NULL в столбец ‘Z
который не имеет значения null в столбце A. Однако я не указал этот столбец на картинке таблицы А. Можете ли вы помочь мне понять, что я делаю не так?
Комментарии:
1. Пожалуйста, не используйте изображения для передачи данных, используйте форматированный текст. Гораздо легче для всех читать.
Ответ №1:
Вам нужно использовать обновление следующим образом:
Update a
Set a.userrolename = c.rolename
From b join c on b.userroleid = b.userroleid and b.userid = a.userid
Where a.userrolename is null
Или используя стандартный sql (подзапрос) следующим образом:
Update a
Set a.userrolename =
(Select c.userrolename
From b join c on b.userroleid = c.userroleid
Where b.userid = a.userid)
Where a.userrolename is null;