【问题标题】:Update one table using data from another table - Oracle使用另一个表中的数据更新一个表 - Oracle
【发布时间】:2012-04-07 04:03:33
【问题描述】:

这是我的试用查询。我正在尝试根据 person_id 使用来自ADDR 的相应数据更新TABLE1 表。下面说缺少 SET 关键字。

UPDATE TABLE1 CFI
INNER JOIN 
(
  SELECT ADDRESS_LINE1, ADDRESS_LINE2, CITY, STATE_PROVINCE, ZIP FROM ADDR WHERE PERSON_ID = CFI.PERSON_ID AND STATUS = 'Active' 
) AS ADDR_DATA
SET CFI.PAYEE_ADDRESS1 = ADDR_DATA.ADDRESS_LINE1, 
    CFI.PAYEE_ADDRESS2 = ADDR_DATA.ADDRESS_LINE2, 
    CFI.PAYEE_CITY= ADDR_DATA.CITY, 
    CFI.PAYEE_STATE_PROVINCE = ADDR_DATA.STATE_PROVINCE,
    CFI.PAYEE_POSTALCODE = ADDR_DATA.ZIP, 
    CFI.PAYEE_COUNTRY_CODE = 'USA'    
WHERE CFI.CUSTOMER_INSTITUTION_ID = 966362 AND CFI.PERSON_ID = ADDR_DATA.PERSON_ID;

请帮忙。提前致谢。

【问题讨论】:

    标签: sql select oracle10g inner-join


    【解决方案1】:

    那就是

    UPDATE TABLE1 CFI
        SET (PAYEE_ADDRESS1, PAYEE_ADDRESS2, PAYEE_CITY, PAYEE_STATE_PROVINCE, PAYEE_POSTALCODE, PAYEE_COUNTRY_CODE) =
            (SELECT ADDRESS_LINE1, ADDRESS_LINE2, CITY, STATE_PROVINCE, ZIP, 'USA' FROM ADDR WHERE PERSON_ID = CFI.PERSON_ID AND STATUS = 'Active')
        WHERE CFI.CUSTOMER_INSTITUTION_ID = 966362;
    

    编辑:错误已修复(希望如此)

    【讨论】:

    • 感谢您的回复。但它说,ADDR_DATA.PERSON_ID 无效标识符。
    【解决方案2】:
    MERGE INTO TABLE1
    USING (
           SELECT PERSON_ID, 
                  ADDRESS_LINE1, ADDRESS_LINE2, CITY, STATE_PROVINCE, ZIP 
             FROM ADDR 
            WHERE STATUS = 'Active' 
          ) ADDR_DATA
       ON TABLE1.PERSON_ID = ADDR_DATA.PERSON_ID 
          AND TABLE1.CUSTOMER_INSTITUTION_ID = 966362 
    WHEN MATCHED THEN 
       UPDATE
          SET PAYEE_ADDRESS1 = ADDR_DATA.ADDRESS_LINE1, 
              PAYEE_ADDRESS2 = ADDR_DATA.ADDRESS_LINE2, 
              PAYEE_CITY = ADDR_DATA.CITY, 
              PAYEE_STATE_PROVINCE = ADDR_DATA.STATE_PROVINCE,
              PAYEE_POSTALCODE = ADDR_DATA.ZIP, 
              PAYEE_COUNTRY_CODE = 'USA';
    

    【讨论】:

    • 感谢您的回复。但它说缺少 ON 关键字。
    • 尝试从 ADDR_DATA 子查询中选择 PERSON_ID,它成功了。非常感谢。
    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 2019-12-27
    • 2018-07-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多