SQL: поиск значений в другой таблице и их обновление - PullRequest
1 голос
/ 16 апреля 2020

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

table1              table2
======              ======
varA     varB       varA     varC
-----------------   ----------------
A        ?          A        3
A        ?          B        2
B        ?          C        1
C        ?

Как мне найти значения varB в table1, используя table2, и вставить их в table1? Результат должен быть:

varA    varB
-----------------
A       3
A       3
B       2
C       1

Ответы [ 2 ]

2 голосов
/ 16 апреля 2020

Вы можете сделать:

update table1 a
join table2 b on b.vara = a.vara
set a.varb = b.varc

Результат:

vara  varb
----  ----
A        3
A        3
B        2
C        1

Пример данных:

create table table1 (vara varchar(6), varb int);

insert into table1 (vara, varb) values ('A', null), ('A', null),
  ('B', null), ('C', null);

create table table2 (vara varchar(6), varc int);

insert into table2 (vara, varc) values ('A', 3), ('B', 2), ('C', 1);
2 голосов
/ 16 апреля 2020

Рассмотрим синтаксис update ... join ...:

update table1 t1
inner join table2 t2 on t1.vara = t2.vara
set t1.varb = t2.varc

Обратите внимание, что для правильной работы vara должен быть уникальным ключом в table2 (иначе запрос не сможет определить уникальную исходную строку для update).

...