Обновить таблицу данными из другой не связанной таблицы - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть три таблицы A, B и C. A и B связаны внешним ключом A.category_id = B.id, A и C имеют одинаковое количество строк.

A

id  category_id value1 value2
1   null        'A'     null
2   null        'B'     null
3   null        'C'     null
4   null        'D'     null

B

id  category
1   0
2   1

C

id category
1  0
2  1
3  1
4  0 

Ожидаемый результат:

A

id  value
1   1
2   2
3   2
4   1

Я хотел бы получить обновленную информациюТаблица, в которой category_id будет идентификатором из таблицы B на основе таблицы C.советы

1 Ответ

0 голосов
/ 09 декабря 2018

В подзапросе отсутствует условие корреляции:

update A
    set category_id = (select B.id
                       from C join
                            B
                            on B.category = C.category
                       where A.id = C.id
                      )
where exists (select 1 from C where A.id = C.id);

Чтобы связать запрос, вы ссылаетесь на внешнюю ссылку, как правило, в состоянии where.Вы не повторяете ссылку на таблицу в предложении from.

Обратите внимание, что внешнее соединение не требуется.Если совпадений нет, значение будет NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...