【问题标题】:SQL - Adding values to new column in a table from another tableSQL - 从另一个表向一个表中的新列添加值
【发布时间】:2019-03-13 00:05:30
【问题描述】:

我正在学习处理数据库,我遇到了一项任务,即向现有表添加新列并使用另一个表中的值向该列添加值。

我的桌子是

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。使用 branch_code 将分支名称添加到新列。分支代码与这两个表相似。

以下是我的代码,它会引发错误:单行子查询返回多行。请指教!

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));

【问题讨论】:

  • dbms 名称请
  • Oracle SQL 开发人员

标签: sql oracle join distinct-values


【解决方案1】:

您可以使用相关子查询来做到这一点:

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

【讨论】:

  • 您能建议使用 JOIN 进行查询吗?
  • @PrajwalVenugopal 。 . .不,我不能。 Oracle 不支持在UPDATE 语句中使用JOIN(好吧,子查询除外)。
【解决方案2】:

要向现有表中添加字段,您必须使用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
    );

【讨论】:

    猜你喜欢
    • 2014-07-30
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2021-10-28
    相关资源
    最近更新 更多