Подтвердить что ты не робот

Таблица обновления MySQL на основе другого значения таблиц

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

Вот моя первая таблица,

ID      SUBST_ID        CREATED_ID
1       031938          TEST123
2       930111          COOL123
3       000391          THIS109
4       039301          BRO1011
5       123456          COOL938
...     ...             ...

Это моя вторая таблица,

ID      SERIAL_ID       BRANCH_ID
1       039301          NULL
2       000391          NULL
3       123456          NULL
...     ...             ...

Мне нужно как-то обновить все строки в моей второй таблице, используя данные из моей первой таблицы.

Это нужно сделать все в одном запросе обновления.

И как SUBST_ID, так и SERIAL_ID совпадают, он должен захватить created_id из первой таблицы и вставить его во вторую таблицу.

Итак, вторая таблица станет следующей,

ID      SERIAL_ID       BRANCH_ID
1       039301          BRO1011
2       000391          THIS109
3       123456          COOL938
...     ...             ...

Благодарим вас за помощь и руководство.

4b9b3361

Ответ 1

UPDATE TABLE2
       JOIN TABLE1
       ON TABLE2.SERIAL_ID = TABLE1.SUBST_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID;

Ответ 2

В дополнение к Tom ответьте, если вам нужно повторить операцию часто и хотите сэкономить время, вы можете сделать:

UPDATE TABLE1
       JOIN TABLE2
       ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID
WHERE TABLE2.BRANCH_ID IS NULL

Ответ 3

Я думаю, что это должно работать

UPDATE secondTable
JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID
SET BRANCH_ID = CREATED_ID

Ответ 4

UPDATE TABLE2
       JOIN TABLE1
       ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID 
WHERE TABLE2.BRANCH_ID IS NULL or TABLE2.BRANCH_ID='';

Ответ 5

Использование INNER JOIN:

UPDATE TABLE1
INNER JOIN TABLE2 ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID;

Другое альтернативное решение, подобное ниже: здесь я использую предложение WHERE вместо JOIN

UPDATE 
    TABLE1,
    TABLE2
WHERE
    TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET 
    TABLE2.BRANCH_ID = TABLE1.CREATED_ID;

Ответ 6

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

update TABLE1 set BRANCH_ID = ( select BRANCH_ID from TABLE2 where TABLE1.SUBST_ID = TABLE2.SERIAL_ID)

но с моим опытом я могу сказать, что этот способ настолько медленный и не рекомендуется!