Обновите столбец в таблице, объединив несколько таблиц - PullRequest
0 голосов
/ 07 июня 2018

У меня есть таблица user Мне нужно обновить,

user Таблица содержит branchId и accountName.branchId является ссылкой fk на таблицу branch, которая содержит institutionId.InstitutionId является ссылкой FK на таблицу institution.Таблица учреждений содержит name и id.

Я хочу обновить accountName в таблице user на эквивалентное название учреждения этого пользователя.

В настоящее время у меня есть

update [user] set accountName = 
(Select i.NAME from institution i LEFT JOIN [branch] b on b.institution_id = i.id and b.id = branchId) 

но я получаю

Подзапрос вернул более 1 значения.Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.Заявление было прекращено.

Я использую mssql.

Я не профессионал, использующий sql.Буду признателен за любую помощь.

Спасибо!.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Попробуйте это:

UPDATE u
SET u.accountName = i.name
FROM User u
JOIN Branch b ON b.id = u.branchId
JOIN Institution i ON i.id = b.institutionId
0 голосов
/ 07 июня 2018

Вам необходимо объединить вашу целевую таблицу с источником.Сначала создайте запрос SELECT

Select i.NAME, u.accountName
from institution i 
JOIN [user] u
on {set suitable criteria}
LEFT JOIN [branch] b on b.institution_id = i.id and b.id = branchId

и убедитесь, что он возвращает правильные результаты.Замените SELECT на и UPDATE следующим образом:

update u set accountName = i.NAME
from institution i 
JOIN [user] u
on {set suitable criteria}
LEFT JOIN [branch] b on b.institution_id = i.id and b.id = branchId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...