簡體   English   中英

使用另一個表中的數據更新一個表 - Oracle

[英]Update one table using data from another table - Oracle

這是我的試用查詢。 我正在嘗試使用基於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;

請幫忙。 提前致謝。

那就是

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;

編輯:錯誤修復(希望)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM