Обновите нулевые значения путем слияния другой таблицы в mssql - PullRequest
1 голос
/ 04 июля 2019

У меня есть две таблицы, такие как:

Таблица 1:

Customer    employee
ASD_1234    WF001
ASD_1235    WF002
ASD_1236    WF003
ASD_1237    NULL
ASD_1238    NULL
ASD_1239    NULL
ASD_1240    WF004
ASD_1234    WF001
ASD_1236    WF003
ASD_1240    WF004

Таблица 2:

Customer    com_employee
ASD_1234    WF001
ASD_1235    WF002
ASD_1236    WF003
ASD_1237    WF005
ASD_1238    WF006
ASD_1239    WF007
ASD_1240    WF004

Таблица 2 - это метаданные, которые состоят из уникальных Customer . Теперь мне нужно обновить только нулевые значения в table1, присоединив table2 к Customer.Как мне этого добиться?Спасибо

Ответы [ 3 ]

1 голос
/ 04 июля 2019

Вы можете использовать коррелированный запрос:

UPDATE table1
SET employee = (
    SELECT com_employee
    FROM table2
    WHERE table2.customer = table1.customer
)
WHERE employee IS NULL
0 голосов
/ 04 июля 2019

Мы можем попробовать использовать обновляемый CTE здесь:

WITH cte AS (
    SELECT t1.employee, t2.com_employee
    FROM Table1 t1
    INNER JOIN Table2 t2
        ON t1.Customer = t2.Customer
)

UPDATE cte
SET employee = com_employee
WHERE employee IS NULL;
0 голосов
/ 04 июля 2019

Вы можете использовать оператор update-join с условием недействительности employee:

UPDATE t1
SET    t1.employee = t2.com_employee
FROM   t1
JOIN   t2 ON t1.customer = t2.customer
WHERE  t1.employee IS NULL
...