Database 更新查看表

Database 更新查看表,database,oracle,oracle10g,Database,Oracle,Oracle10g,各位早上好, 我们有test1和test2环境。两种环境中都有两个表contact和users表 T.Contact T.User T1.User 联系人是引用表,必须更新用户表ID。现在,我们正在执行以下步骤来更新T.联系人的用户ID: 根据T.Contact中的用户ID在T.User的ID中查找姓氏 在T1中查找ID。更新ID的用户 更改T中的用户ID。联系人 我们想知道是否存在更好的方法。 如果我们有相同的数据库,我们可以这样使用:假设 UPDATE T.Contact SET USER

各位早上好,

我们有test1和test2环境。两种环境中都有两个表contact和users表

T.Contact T.User
T1.User
联系人是引用表,必须更新用户表ID。现在,我们正在执行以下步骤来更新T.联系人的用户ID:

  • 根据T.Contact中的用户ID在T.User的ID中查找姓氏
  • 在T1中查找ID。更新ID的用户
  • 更改T中的用户ID。联系人
  • 我们想知道是否存在更好的方法。

    如果我们有相同的数据库,我们可以这样使用:假设

    UPDATE T.Contact
    SET USER_ID IN (
        SELECT USER_ID 
        FROM T.User A, T.Contact B , T1.User C
        WHERE A.LNAME = C.LNAME 
          AND A.FNAME = C.FNAME 
          AND A.USER_ID = B.USER_ID
    )
    
    可以调用不同的数据库环境吗

    谢谢

    添加注释:


    我们应该说不同的模式,而不是环境。

    听起来像是你在寻找的

    T.Contact T.User
    T1.User
    
    您可以创建从一个数据库到另一个数据库的链接,如下所示:

    select ...
    from tablename@otherdb;
    
    使用“服务名称”创建数据库链接otherdb CONNECT到由密码标识的架构

    然后您可以在如下查询中使用它:

    select ...
    from tablename@otherdb;
    

    您是在处理两个独立的数据库,还是在同一个数据库中只处理两个模式?

    该更新没有意义
    SET USER_ID
    后面必须跟一个
    =
    。此外,如果表都在同一个实例上,那么您需要做的就是确保在更新语句中引用正确的模式。感谢Gigatron,在同一个数据库中只有两个模式。如果你有机会,请和我们分享四个。