SQL - добавление значений в новый столбец таблицы из другой таблицы - PullRequest
0 голосов
/ 08 октября 2018

Я учусь работать с базами данных, и я столкнулся с задачей добавить новый столбец в существующую таблицу и добавить значения в этот столбец, используя значения из другой таблицы.

Мои таблицы

table_1                          table_2
branch_code| book_id             branch_branch_code| branch_name
        100| 1                                  100| Carnegie
        101| 2                                  102| Reservoir
        102| 3                                  103| JOLIMONT

Мне нужно добавить новый столбец book_returned_branch в таблицу 1. Добавить имя ветви в новый столбец, используя код_включения.Код ветви аналогичен обеим таблицам.

Ниже приведен мой код, который выдает ошибку: однострочный подзапрос возвращает более одной строки.Пожалуйста, сообщите!

UPDATE TABLE_1 
    SET BOOK_RETURNED_BRANCH = 
    (SELECT BRANCH_NAME FROM TABLE_2 A
    JOIN TABLE_2 B ON A.BRANCH_CODE = B.BRANCH_BRANCH_CODE
    WHERE BRANCH_CODE = (SELECT BRANCH_CODE FROM TABLE_2));

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Для добавления поля в существующую таблицу вы должны использовать alter table.Попробуйте следующий код:

alter table table_1 add BOOK_RETURNED_BRANCH varchar(150);

update
    table_1
set
    BOOK_RETURNED_BRANCH =
    (
        select
            branch_name
        from
            table_2
        where
            table_1.branch_code = table_2.branch_branch_code
    );
0 голосов
/ 08 октября 2018

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

UPDATE TABLE_1 
    SET BOOK_RETURNED_BRANCH = (SELECT BRANCH_NAME
                                FROM TABLE_2 t2
                                WHERE table_1.BRANCH_CODE = t2.branch_branch_code
                               );

Нет JOIN необходимо в подзапросе.

Сказав это, я настоятельно не рекомендую вам делать это.Вы должны просто использовать JOIN при запросе таблицы, чтобы получить имя ветви.

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