Обновление на основе другой таблицы - PullRequest
0 голосов
/ 02 марта 2020

У меня есть следующая таблица (сотрудники):

EmployeeId WorkingForId WorkingFor
34         45           NULL
34         66           NULL
34         78           NULL

Я хочу обновить столбец WorkingFor на основе другой таблицы (компании), как показано ниже:

CompanyId Name
45        SONY
66        HP
78        MICROSOFT
99        APPLE

Так что мой ожидаемый вывод будет выглядеть следующим образом:

EmployeeId WorkingForId WorkingFor
    34         45       SONY
    34         66       HP
    34         78       MICROSOFT

Вы можете создать эту таблицу с помощью кода ниже:

CREATE TABLE employees
    ([EmployeeId] int, [WorkingForId] int, [WorkingFor] varchar(40))
;

INSERT INTO employees
    ([EmployeeId], [WorkingForId], [WorkingFor])
VALUES
    (34, 45, NULL),
    (34, 66, NULL),
    (34, 78, NULL)
;


CREATE TABLE companies
    ([CompanyId] int, [Name] varchar(9))
;

INSERT INTO companies
    ([CompanyId], [Name])
VALUES
    (45, 'SONY'),
    (66, 'HP'),
    (78, 'MICROSOFT'),
    (99, 'APPLE')
;

Ответы [ 2 ]

2 голосов
/ 02 марта 2020

Вы можете использовать эту простую Update оценку:

Update employees 
Set WorkingFor = c.Name
From companies c
Where CompanyId = employees.WorkingForId

Выход:

EmployeeId  WorkingForId    WorkingFor
34          45              SONY
34          66              HP
34          78              MICROSOFT
2 голосов
/ 02 марта 2020

Вы можете сделать это с помощью объединения в операторе UPDATE:

update e
set e.WorkingFor = c.Name
from employees e inner join companies c
on c.CompanyId = e.WorkingForId

См. Демоверсию . Результаты:

> EmployeeId | WorkingForId | WorkingFor
> ---------: | -----------: | :---------
>         34 |           45 | SONY      
>         34 |           66 | HP        
>         34 |           78 | MICROSOFT 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...