SQL обновить таблицу 1 с идентификатором из таблицы 2, если имя соответствует - PullRequest
0 голосов
/ 28 мая 2020

Может ли кто-нибудь помочь со следующим?

У меня есть 2 таблицы, и мне нужно обновить таблицу №1 данными из таблицы №2, как в примере ниже

Таблица 1:

ID - Имя - ID ядра

1 - x - NULL

Таблица 2:

ID - Имя

0 - x

Результат (в Таблице 1):

ID - Имя - Идентификатор двигателя

1 - x - 0

с использованием l oop поверх таблицы 1

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

В большинстве баз данных вы можете сделать это с помощью коррелированного подзапроса:

update t1
set engine_id = (select engine_id from t2 where t2.name = t1.name)
where engine_id is null

Обратите внимание, что для правильной работы не должно быть дубликатов name в t2 (в противном случае подзапрос возможно, вернет несколько строк, что приведет к ошибке запроса).

0 голосов
/ 28 мая 2020

Хотя вы не пометили свой продукт базы данных, синтаксис почти такой же для многих SQL бэкэндов:

update table1
set engineId = t2.Id
from table1 t1 
inner join table2 t2 on t1.Name = t2.Name;

Вот DBFiddle Demo для SQL Server

РЕДАКТИРОВАТЬ: если вы используете MySQL, его синтаксис немного необычный:

update Table1 t1
inner join Table2 t2 on t1.Name = t2.Name
set t1.engineId = t2.Id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...